скрипт от 3 до 5 ордеров

 
Здравствуйте.Нужен скрипт, который бы при единичном клике открывал бы от 3 до 5 сделок. в одну сторону.Кто знает где взять ? буду признателен за любую инфу.
 

Сам напиши скрипта

Незря здесь присутствуют такие разделы:

Документация; Учебник

 
// Скрипт МультиБАЙ.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);
}
//========= конец ======================================================\
 
kombat писал (а) >>

если открытие подразумевается из-за ограничения обьёма сверху,

то заюзать этот скрипт, он сам разложит позы по максилотам...

Спасибо kombat.Удачи!

Причина обращения: