Сигнальный бот
// ------------------------------------------- ------------------------
extern ENUM_TIMEFRAMES timeframe_RSI = 60 ;
extern int period_RSI = 14 ;
внешний int level_buy = 30 ;
extern int level_sell = 70 ;
extern int MinStep = 20 ;
внешний двойной лот = 0,1 ;
ехЬегп двойной K_Lot = 1,5 ;
extern int Takeprofit = 50 ;
extern int Magic = 0 ;
extern int DigitsLot = 2 ;
внешнее проскальзывание int = 3 ;
// ------------------------------------------------ -------------------
Строка АС;
двойной MINLOT, MAXLOT;
datetime TimeBar = 0 ;
// ------------------------------------------------ -------------------
void OnTick ()
{
if (! IsTradeAllowed ())
{
DrawLABEL ( "cm Торговля" , 1 , 5 , 20 , Red, "Торговля запрещена " );
возврат ;
}
else DrawLABEL ( "см Торговля" , 1 , 5 , 20, clrGreen , "Торговля разрешена" );
// ---
double STOPLEVEL = MarketInfo ( Symbol (), MODE_STOPLEVEL);
// ---
double MaxOrderBuy = 0 , MinOrderSell = 0 , MinOrderBuy = 0 , MaxOrderSell = 0 , OL = 0 , LB = 0 , LS = 0 , PB = 0 , PS = 0 ;
двойной OSL, OTP, OOP, SL, прибыль = 0 , прибыль = 0 , прибыль = 0 ;
int i, b = 0 , s = 0 , tip;
за(i = 0 ; i < OrdersTotal (); i ++)
{
if ( OrderSelect (i, SELECT_BY_POS, MODE_TRADES))
{
if (OrderSymbol () == Symbol () && Magic == OrderMagicNumber ())
{
tip = OrderType () ;
OOP = NormalizeDouble (OrderOpenPrice (), Digits );
OL = OrderLots ();
if (tip == OP_BUY)
{
PB + = OOP * OL; LB + = ПР;
ProfitB + = OrderProfit () + OrderCommission () + OrderSwap ();
б ++;
если(MaxOrderBuy <OOP || MaxOrderBuy == 0 ) MaxOrderBuy = OOP;
if (MinOrderBuy> OOP || MinOrderBuy == 0 ) MinOrderBuy = OOP;
}
if (tip == OP_SELL)
{
PS + = OOP * OL; LS + = OL;
PROFITS + = OrderProfit () + OrderCommission () + OrderSwap ();
s ++;
if (MinOrderSell> OOP || MinOrderSell == 0 ) MinOrderSell = OOP;
if (MaxOrderSell <OOP || MaxOrderSell == 0 ) MaxOrderSell = OOP;
}
}
}
}
// ---
Прибыль = ProfitB + ПРИБЫЛЬ;
двойной NLb = 0 , NLs = 0 ;
if (b> 0 ) NLb = NormalizeDouble (PB / LB, Digits );
if (s> 0 ) NLs = NormalizeDouble (PS / LS, Digits );
двойной TPB = 0 , TPS = 0 ;
if (b> 0 ) TPB = NormalizeDouble (NLb + Takeprofit * Point , Digits );
if (s> 0 ) TPS = NormalizeDouble (NLs-Takeprofit *Точка , цифры );
// ---
if (b + s> 0 )
{
for (i = 0 ; i < OrdersTotal (); i ++)
{
if ( OrderSelect (i, SELECT_BY_POS, MODE_TRADES))
{
if (OrderSymbol () == Symbol ( ) && Magic == OrderMagicNumber ())
{
tip = OrderType ();
OSL = NormalizeDouble (OrderStopLoss (), Digits );
OTP = NormalizeDouble (OrderTakeProfit (), Digits );
OOP = NormalizeDouble (OrderOpenPrice (), Digits );
SL = OSL;
if (tip == OP_BUY)
{
if (TPB! = OTP)
{
if (! OrderModify (OrderTicket (), OOP, OSL, TPB, 0 , White)) Print ( "Ошибка OrderModify TP Martin" , GetLastError ());
}
}
if (tip == OP_SELL)
{
if (TPS! = OTP)
{
if(! OrderModify (OrderTicket (), OOP, OSL, TPS, 0 , White)) Print ( «Ошибка OrderModify TP Martin» , GetLastError ());
}
}
}
}
}
}
double AB = AccountBalance ();
DrawLABEL ( «см Баланс» , 1 , 5 , 35 , clrGreen , DoubleToStr (AB, 2 ));
DrawLABEL ( "см Эквити" , 1 , 5 , 50 , clrGreen, DoubleToStr (AccountEquity (), 2 ));
DrawLABEL ( "cm FreeMargin" , 1 , 5 , 65 , clrGreen , DoubleToStr (AccountFreeMargin (), 2 ));
DrawLABEL ( «cm Take» , 1 , 5 , 80 , Color (Profit> 0 , clrGreen , clrRed ), DoubleToStr (Profit, 2 ));
// ---
if (TimeBar == iTime ( NULL , timeframe_RSI , 0 )) return ;
двойнойLots = 0 , RSI1 = 0 , RSI0 = 0 ;
// ---
if (b == 0 || s == 0 )
{
RSI0 = iRSI ( NULL , timeframe_RSI, period_RSI , PRICE_CLOSE , 0 );
RSI1 = iRSI ( NULL , таймфрейм_RSI, period_RSI, PRICE_CLOSE , 1 );
}
if (RSI0> = level_buy && RSI1 <= level_buy)
{
if ((MinOrderBuy-MinStep * Point > Ask || MinOrderBuy == 0 ))
{
Lots = NormalizeDouble (Lot * MathPow (K_Lot, b), DigitsLot);
if (Lots> MAXLOT) Lots = MAXLOT;
if (Lots <MINLOT) Lots = MINLOT;
if ( OrderSend ( Symbol (), OP_BUY, Lots, NormalizeDouble (Ask, Digits ), проскальзывание, 0 , 0 , NULL , Magic, 0 , CLR_NONE) == - 1 )
Print ( "Ошибка" , GetLastError (), "открытия ордера " );
еще TimeBar = iTime ( NULL, таймфрейм_RSI, 0 );
}
}
// ---
Lots = 0 ;
if (RSI0 <= level_sell && RSI1> = level_sell)
{
if (MaxOrderSell + MinStep * Point <Bid)
{
Lots = NormalizeDouble (Lot * MathPow (K_Lot, s), DigitsLot);
if (Lots> MAXLOT) Lots = MAXLOT;
if (Lots <MINLOT) Lots = MINLOT;
if ( OrderSend ( Symbol (), OP_SELL, Lots, NormalizeDouble (Bid, Digits ), проскальзывание, 0 , 0 ,NULL , Magic, 0 , CLR_NONE) == - 1 )
Print ( "Ошибка" , GetLastError (), "открытие ордера" );
иначе TimeBar = iTime ( NULL , timeframe_RSI , 0 );
}
}
return ;
}
// ----------------------------------------------- -------------------
void OnDeinit ( const int reason)
{
if (! IsTesting ())
{
ObjectsDeleteAll ( 0 , "см" );
}
}
// ---------------------------------------------- ---------------------
void DrawLABEL ( имя строки , int CORNER, int X, int Y, цвет clr, имя строки , ENUM_ANCHOR_POINT ANCHOR = ANCHOR_RIGHT_UPPER )
{
if ( ObjectFind (name)! = - 1 ) ObjectDelete (name);
ObjectCreate (name, OBJ_LABEL , 0 , 0 , 0 );
ObjectSet (имя, OBJPROP_CORNERУГОЛОК);
ObjectSet (имя, OBJPROP_ANCHOR , ANCHOR);
ObjectSet (имя, OBJPROP_XDISTANCE , X);
ObjectSet (имя, OBJPROP_YDISTANCE , Y);
ObjectSetInteger ( 0 , имя, OBJPROP_SELECTABLE , false );
ObjectSetInteger ( 0 , имя, OBJPROP_SELECTED , false );
ObjectSetInteger ( 0 , имя, OBJPROP_HIDDEN , true );
ObjectSetText (name, Name, 10 , «Arial» , clr);
}
// + ----------------------------------------------- ------------------- +
int OnInit ()
{
RectLabelCreate ( 0 , «см фон» , 0 , 195 , 15 , 195 , 85 );
DrawLABEL ( «см Баланс AC» , 1 , 190 , 35 , clrGreen , «Баланс» , ANCHOR_LEFT_UPPER );
DrawLABEL ( "см Equity AC" , 1 , 190 , 50 , clrGreen, «Собственный капитал» , ANCHOR_LEFT_UPPER );
DrawLABEL ( "см FreeMargin AC" , 1 , 190 , 65 , clrGreen , "FMargin" , ANCHOR_LEFT_UPPER );
DrawLABEL ( «cm Profit AC» , 1 , 190 , 80 , clrGreen , «Profit» , ANCHOR_LEFT_UPPER );
MINLOT = MarketInfo ( Symbol (), MODE_MINLOT);
MAXLOT = MarketInfo ( Symbol (), MODE_MAXLOT);
Комментарий («Start» , TimeToStr ( TimeCurrent (), TIME_DATE | TIME_SECONDS ));
AC = StringConcatenate ( "" , AccountCurrency ());
возврат ( INIT_SUCCEEDED );
}
// + ---------------------------------------------- -------------------- +
color Color ( bool P, color a, color b)
{
если (P) вернуть (a);
еще возврат (б);
}
// ----------------------------------------------- -------------------
boolRectLabelCreate ( const long chart_ID = 0 , // ID графика
const string name = "RectLabel" , // имя метки
const int sub_window = 0 , // номер подокна
const long x = 0 , // координаты по оси X
const long y = 0 , // координаты по оси y
const int width = 50 , // ширина
const int height = 18 , // высота
const color back_clr = clrWhite , // цвет фона
const color clr = clrBlack , // цвет плоской границы (плоский)
const ENUM_LINE_STYLE style = STYLE_SOLID , // стиль плоской границы
const int line_width = 1 , // толщина плоской границы
const bool back = false, // на заднем плане
const bool selection = false , // выделить для перемещений
const bool hidden = true , // скрыть в списке объектов
const long z_order = 0 ) // приоритет на нажатие мышью
{
ResetLastError ();
if ( ObjectFind (chart_ID, name) == - 1 )
{
ObjectCreate (chart_ID, name, OBJ_RECTANGLE_LABEL , sub_window, 0 , 0);
ObjectSetInteger (chart_ID, name, OBJPROP_BORDER_TYPE , BORDER_FLAT );
ObjectSetInteger (chart_ID, name, OBJPROP_CORNER , CORNER_RIGHT_UPPER );
ObjectSetInteger (chart_ID, имя, OBJPROP_STYLE , стиль);
ObjectSetInteger (chart_ID, name, OBJPROP_WIDTH , line_width);
ObjectSetInteger (chart_ID, имя, OBJPROP_BACK , назад);
ObjectSetInteger (chart_ID, name, OBJPROP_SELECTABLE , selection);
ObjectSetInteger (chart_ID, name, OBJPROP_SELECTED , выделение);
ObjectSetInteger (chart_ID, name, OBJPROP_HIDDEN , скрытый);
ObjectSetInteger (chart_ID, name, OBJPROP_ZORDER , z_order);
}
ObjectSetInteger (chart_ID, name, OBJPROP_BGCOLOR , back_clr);
ObjectSetInteger (chart_ID, name, OBJPROP_COLOR , clr);
ObjectSetInteger (chart_ID, имя, OBJPROP_XSIZE , ширина);
ObjectSetInteger (chart_ID, имя, OBJPROP_YSIZE , высота);
ObjectSetInteger (chart_ID, name, OBJPROP_XDISTANCE , x);
ObjectSetInteger (chart_ID, name, OBJPROP_YDISTANCE , y);
возврат ( правда );
-
1676 41 0 Ничего не понятно, но очень интересно как и фрилансеру выше
НО за то, что мне ничего не понятно нужно доплачивать, а то, что интересно, то уже наглость барыг. Тут уж извините, куда деватся.
-
уважаемый, это что
-
аа лол, это код, прогнанный через google translate😂 😂 😂
-
Ситуация такая нужен сигнальный бот больше как для бинарных опционов , но вот с использованием RSI , сделка должна открываться при пересечении 75 отметки на понижения и при пересечении 25 отметки на повышения , я не знаток алгоритмов но кое что понимаю по своему , ну а вы так как спец можете и мне предложить свои варианты .Узнал реальное задание.
-
Актуальные фриланс-проекты в категории Разработка ботов
Telegram бот для мультипостинга
3000 UAH
Нужно разработать телеграмм бота, который позволит выкладывать посты по графику в указанных чатах и каналах. Создаем пост, указываем дату и время публикации, нужно ли закрепить пост, а также периодичность повторов. Сотрудник должен загрузить посты с начальным графиком. Затем… Разработка ботов ∙ 16 ставок |
Разработка тг чат-бота
1500 UAH
нужно создать телеграмм чат бота 1) Приветственное сообщение, после подписки в чат. ПО НЕОБХОДИМОСТИ 2) Проверка подписки на канал при попытке написать в чате, если пользователь чата не подписан на канал и хочет разместить свое объявление в чате, ему отображается сообщение с… Разработка ботов ∙ 10 ставок |
Telegram bot для копирования большого обьема информации с Сайта-форума
5884 UAH
Добрый день ищу ответственного исполнителя, который может с реализацией моего проекта: Нужен Telegram Bot который будет переносить информацию (контент, фото, видео возможно до 2гб с частыми обновлениями) и выкладывать в телеграм каналы по тэгам Так же нужна удобная реализация… Javascript, Разработка ботов ∙ 15 ставок |
Телеграм бот для парковки (aiogram, sqlalchemy)Для помощи основному разработчику нужно дописать логику бота (некоторые модули). Бот для парковки (почасовая оплата, открытие шлагбаума для проезда). Частично функционал уже реализован. Механически все уже работает. Код чистый и аккуратный. Проект на GitHub. У основного… Python, Разработка ботов ∙ 11 ставок |
Создать бота для трейдингаБот должен открывать и закрывать сделки на криптобирже (Binance либо OKX) по сигналу уже существующего индикатора на TradingView. Есть большой опыт в ручном трейдинге, но это первый проект в алго-трейдинге. Буду рад сотрудничеству со специалистом имеющим опыт в создании… Разработка ботов ∙ 8 ставок |