Здравствуйте.Нужен скрипт, который бы при единичном клике открывал бы от 3 до 5 сделок. в одну сторону.Кто знает где взять ? буду признателен за любую инфу.
- Помогите пожалуйста изменить функцию советника!
- FOREX - Тенденции, прогнозы и следствия 2015
- Нужен скрипт!!
Сам напиши скрипта
Незря здесь присутствуют такие разделы:
Документация; Учебник
// Скрипт МультиБАЙ.mq4----------------------+ #include <WinUser32.mqh> #property show_inputs extern double Lots=5.34; // лотов extern double kRaz=1; // скока раз extern int StopLoss=20; extern int TakeProfit=20; //-------------------------------------------------------------------- int start() { double MaxiLot=MarketInfo(Symbol(), MODE_MAXLOT); double loss=0, profit=0; //--- преобразование стоповых экстернов --- if (StopLoss>0) loss=Ask-StopLoss*Point; if (TakeProfit>0) profit=Ask+TakeProfit*Point; //=== начало процедуры открытия позиций ===\\ for (int i=0; i<kRaz; i++) { string comment="buy: "+(1+i)+" из: "+kRaz; int ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,0,0,comment); if (ticket==-1) Print ("Ошибка = ",GetLastError()); else { if (!OrderSelect(ticket,SELECT_BY_TICKET)) Print ("Ошибка = ",GetLastError()); else if (!OrderModify(ticket,OrderOpenPrice(),loss,profit,0)) Print ("Ошибка = ",GetLastError()); } } return(0); } //========= конец ======================================================\
если открытие подразумевается из-за ограничения обьёма сверху,
то заюзать этот скрипт, он сам разложит позы по максилотам...
// Скрипт МультиБАЙ.mq4----------------------+ #include <WinUser32.mqh> #property show_inputs extern double Lots=112.34; extern int StopLoss=20; extern int TakeProfit=20; //-------------------------------------------------------------------- int start() { //--- различные переменные ---- double MaxiLot=MarketInfo(Symbol(), MODE_MAXLOT); int DigLot=0; if (MarketInfo(Symbol(), MODE_MINLOT) ==0.1) DigLot=1; if (MarketInfo(Symbol(), MODE_MINLOT) ==0.01) DigLot=2; double loss=0, profit=0; //--- преобразование стоповых экстернов --- if (StopLoss>0) loss=Ask-StopLoss*Point; if (TakeProfit>0) profit=Ask+TakeProfit*Point; //--- разложение обьёма Lots по макслотам --- int kRaz=Lots/MaxiLot; Print ("Скока: ", kRaz); //--- вычисляем остаток с точностью до минилота ---- double ostat=NormalizeDouble(Lots-(kRaz*MaxiLot),DigLot); //--- Окно подтверждения (необязательное), пригодится если обьём лота расчитывается // и передаётся через глобальную переменную или по внутреннему расчёту внутри скрипта, // а не задаётся в экстерне. Для включения просто раскомментируйте строку... --- //MessageBox("Будет открыто "+DoubleToStr(ostat+(kRaz*MaxiLot),DigLot)+" лот, ОК ?", "Подтверждение БАЙ",MB_OK|MB_ICONERROR); //=== начало процедуры открытия позиций, этап-1: сколько раз по максилотам ===\\ for (int i=0; i<kRaz; i++) { string comment="buy: "+(1+i)+" из: "+kRaz+" по раскладу"; int ticket=OrderSend(Symbol(),OP_BUY,MaxiLot,Ask,3,0,0,comment); if (ticket==-1) Print ("Ошибка = ",GetLastError()); else { if (!OrderSelect(ticket,SELECT_BY_TICKET)) Print ("Ошибка = ",GetLastError()); else if (!OrderModify(ticket,OrderOpenPrice(),loss,profit,0)) Print ("Ошибка = ",GetLastError()); } } //--- продолжение процедуры открытия позиций, этап-2: остаток --- string ostcomm="остаток buy: "+DoubleToStr(ostat,DigLot)+" лот"; int ticket2=OrderSend(Symbol(),OP_BUY,ostat,Ask,3,0,0,ostcomm); if (ticket2==-1) Print ("Ошибка = ",GetLastError()); else { if (!OrderSelect(ticket2,SELECT_BY_TICKET)) Print ("Ошибка = ",GetLastError()); else if (!OrderModify(ticket2,OrderOpenPrice(),loss,profit,0)) Print ("Ошибка = ",GetLastError()); } return(0); } //========= конец ======================================================\
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь