//+------------------------------------------------------------------+
#property link "_"
#property show_inputs
#include <stderror.mqh>
#include <stdlib.mqh>
// Прекомпилированные входные значения
// Стартовый размер лота
extern double StartLot = 1;
// Количество ордеров
extern int OrdersNumber = 1;
// Уровень Stop Loss
extern int StopLoss = 0;
// Уровень Take Profit
extern int TakeProfit = 0;
// Расстоя
extern int Pips = 0;
// Уровень Stop Loss для
extern bool StopForEach = true;
// Коэфициент умножения
extern double Magnifier = 1;
// Покупка или продажа: 1 - покупка, -1 - продажа, по умолчанию 0 - определя
// Зависит от DnDLevel, если он 0 или 1, то покупка при бросании выше графика, если -1, то - ниже (подробнее ниже).
// Можно сделать 2 копии скрипта с прекомпилированными значения
extern int BuySell = 0;
// Комментарий
extern string UserComment = "";
// Следующие параметры не вынесены во внешние, так как переключать их каждый раз бессмысленно,
// но их можно поменя
// Определя
// При значении по умолчанию 0 - никакие уровни не устанавливаются
// Если график брошен выше цены, то происходит покупка, ниже - продажа.
// При значении 1 выставля
// При значении -1 выставля
// При этом направление определя
int DnDLevel = 0;
// Допустимое проскальзывание.
int Slippage = 2;
// Количество попыток, в случае ошибки.
int MaxTries = 3;
// Время
int SleepTime = 200;
// Звук вкл./выкл.
bool Sound = true;
// "Волшебный номер", иногда может быть полезно для
int Magic = NULL;
// Дальше ничего меня
//+------------------------------------------------------------------+
//| script program start function |
//+------------------------------------------------------------------+
int start() {
double OpenPrice, Lots, SL, TP, SLPrice;
bool Buy = false;
int Tries, Cmd, Dev, Check;
//----
double DropPrice = WindowPriceOnDropped();
datetime DropTime = WindowTimeOnDropped();
int DropBar = ArrayBsearch(Time, DropTime);
// Check Global Variables
if (GlobalVariableCheck("bvnopen.OrdersNumber"))
OrdersNumber = GlobalVariableGet("bvnopen.OrdersNumber");
if (GlobalVariableCheck(StringConcatenate("bvnopen.", Symbol(), ".OrdersNumber")))
OrdersNumber = GlobalVariableGet(StringConcatenate("bvnopen.", Symbol(), ".OrdersNumber"));
if (GlobalVariableCheck("bvnopen.StartLot"))
StartLot = GlobalVariableGet("bvnopen.StartLot");
if (GlobalVariableCheck(StringConcatenate("bvnopen.", Symbol(), ".StartLot")))
StartLot = GlobalVariableGet(StringConcatenate("bvnopen.", Symbol(), ".StartLot"));
if (GlobalVariableCheck(StringConcatenate("bvnopen.", Symbol(), ".LotMagnifier")))
StartLot = StartLot * GlobalVariableGet(StringConcatenate("bvnopen.", Symbol(), ".LotMagnifier"));
else if (GlobalVariableCheck("bvnopen.LotMagnifier"))
StartLot = StartLot * GlobalVariableGet("bvnopen.LotMagnifier");
if (GlobalVariableCheck("bvnopen.TakeProfit"))
TakeProfit = GlobalVariableGet("bvnopen.TakeProfit");
if (GlobalVariableCheck(StringConcatenate("bvnopen.", Symbol(), ".TakeProfit")))
TakeProfit = GlobalVariableGet(StringConcatenate("bvnopen.", Symbol(), ".TakeProfit"));
if (GlobalVariableCheck("bvnopen.StopLoss"))
StopLoss = GlobalVariableGet("bvnopen.StopLoss");
if (GlobalVariableCheck(StringConcatenate("bvnopen.", Symbol(), ".StopLoss")))
StopLoss = GlobalVariableGet(StringConcatenate("bvnopen.", Symbol(), ".StopLoss"));
if (GlobalVariableCheck("bvnopen.DnDLevel"))
DnDLevel = GlobalVariableGet("bvnopen.DnDLevel");
if (GlobalVariableCheck(StringConcatenate("bvnopen.", Symbol(), ".DnDLevel")))
DnDLevel = GlobalVariableGet(StringConcatenate("bvnopen.", Symbol(), ".DnDLevel"));
if (GlobalVariableCheck("bvnopen.Sound"))
Sound = GlobalVariableGet("bvnopen.Sound");
if (GlobalVariableCheck(StringConcatenate("bvnopen.", Symbol(), ".Sound")))
Sound = GlobalVariableGet(StringConcatenate("bvnopen.", Symbol(), ".Sound"));
// Main Algorythm
if (BuySell == 0) {
if (DropPrice == 0) return;
if (DropPrice > Close[DropBar]) Buy = true;
if (DnDLevel == -1) Buy = !Buy;
} else if (BuySell > 0) Buy = true;
if (DnDLevel > 0 && TakeProfit == 0) TakeProfit = MathAbs(DropPrice - Bid) / Point;
if (DnDLevel < 0 && StopLoss == 0) StopLoss = MathAbs(DropPrice - Bid) / Point;
Print(OrdersNumber);
for (int i = 0; i < OrdersNumber; i++) {
Dev = i * Pips;
Lots = StartLot * MathPow(Magnifier, i);
if (Buy) {
if (Dev == 0) Cmd = OP_BUY;
else Cmd = OP_BUYLIMIT;
OpenPrice = NormalizeDouble(Ask - Dev * Point, Digits); // Buy
if (StopForEach) SLPrice = OpenPrice;
else SLPrice = Ask;
if (StopLoss != 0) SL = NormalizeDouble(SLPrice - StopLoss * Point, Digits);
else SL = 0;
if (TakeProfit != 0) TP = NormalizeDouble(OpenPrice + TakeProfit * Point, Digits);
else TP = 0;
} else {
if (Dev == 0) Cmd = OP_SELL;
else Cmd = OP_SELLLIMIT;
OpenPrice = NormalizeDouble(Bid + Dev * Point, Digits); // Sell
if (StopForEach) SLPrice = OpenPrice;
else SLPrice = Bid;
if (StopLoss != 0) SL = NormalizeDouble(SLPrice + StopLoss * Point, Digits);
else SL = 0;
if (TakeProfit != 0) TP = NormalizeDouble(OpenPrice - TakeProfit * Point, Digits);
else TP = 0;
}
Tries = MaxTries;
//Print(StringConcatenate(Symbol(), ",", Cmd, ",", Lots, ",", OpenPrice, ",", Slippage, ",", SL, ",", TP, ",", UserComment, ",", Magic));
while (Tries > 0) {
if (!OrderSend(Symbol(), Cmd, Lots, OpenPrice, Slippage, SL, TP, UserComment, Magic)) {
Check = GetLastError();
Print(StringConcatenate("Error: ", Check, "! ", ErrorDescription(Check)));
Sleep(SleepTime);
Tries --;
} else Tries = 0;
}
}
if (Sound) PlaySound("ok.wav");
//----
return(0);
}
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+ #property copyright "_" #property link "_" #property show_inputs #include <stderror.mqh> #include <stdlib.mqh> // Прекомпилированные входные значения // Стартовый размер лота extern double StartLot = 1; // Количество ордеров extern int OrdersNumber = 1; // Уровень Stop Loss extern int StopLoss = 0; // Уровень Take Profit extern int TakeProfit = 0; // Расстоя extern int Pips = 0; // Уровень Stop Loss для extern bool StopForEach = true; // Коэфициент умножения extern double Magnifier = 1; // Покупка или продажа: 1 - покупка, -1 - продажа, по умолчанию 0 - определя // Зависит от DnDLevel, если он 0 или 1, то покупка при бросании выше графика, если -1, то - ниже (подробнее ниже). // Можно сделать 2 копии скрипта с прекомпилированными значения extern int BuySell = 0; // Комментарий extern string UserComment = ""; // Следующие параметры не вынесены во внешние, так как переключать их каждый раз бессмысленно, // но их можно поменя // Определя // При значении по умолчанию 0 - никакие уровни не устанавливаются // Если график брошен выше цены, то происходит покупка, ниже - продажа. // При значении 1 выставля // При значении -1 выставля // При этом направление определя int DnDLevel = 0; // Допустимое проскальзывание. int Slippage = 2; // Количество попыток, в случае ошибки. int MaxTries = 3; // Время int SleepTime = 200; // Звук вкл./выкл. bool Sound = true; // "Волшебный номер", иногда может быть полезно для int Magic = NULL; // Дальше ничего меня //+------------------------------------------------------------------+ //| script program start function | //+------------------------------------------------------------------+ int start() { double OpenPrice, Lots, SL, TP, SLPrice; bool Buy = false; int Tries, Cmd, Dev, Check; //---- double DropPrice = WindowPriceOnDropped(); datetime DropTime = WindowTimeOnDropped(); int DropBar = ArrayBsearch(Time, DropTime); // Check Global Variables if (GlobalVariableCheck("bvnopen.OrdersNumber")) OrdersNumber = GlobalVariableGet("bvnopen.OrdersNumber"); if (GlobalVariableCheck(StringConcatenate("bvnopen.", Symbol(), ".OrdersNumber"))) OrdersNumber = GlobalVariableGet(StringConcatenate("bvnopen.", Symbol(), ".OrdersNumber")); if (GlobalVariableCheck("bvnopen.StartLot")) StartLot = GlobalVariableGet("bvnopen.StartLot"); if (GlobalVariableCheck(StringConcatenate("bvnopen.", Symbol(), ".StartLot"))) StartLot = GlobalVariableGet(StringConcatenate("bvnopen.", Symbol(), ".StartLot")); if (GlobalVariableCheck(StringConcatenate("bvnopen.", Symbol(), ".LotMagnifier"))) StartLot = StartLot * GlobalVariableGet(StringConcatenate("bvnopen.", Symbol(), ".LotMagnifier")); else if (GlobalVariableCheck("bvnopen.LotMagnifier")) StartLot = StartLot * GlobalVariableGet("bvnopen.LotMagnifier"); if (GlobalVariableCheck("bvnopen.TakeProfit")) TakeProfit = GlobalVariableGet("bvnopen.TakeProfit"); if (GlobalVariableCheck(StringConcatenate("bvnopen.", Symbol(), ".TakeProfit"))) TakeProfit = GlobalVariableGet(StringConcatenate("bvnopen.", Symbol(), ".TakeProfit")); if (GlobalVariableCheck("bvnopen.StopLoss")) StopLoss = GlobalVariableGet("bvnopen.StopLoss"); if (GlobalVariableCheck(StringConcatenate("bvnopen.", Symbol(), ".StopLoss"))) StopLoss = GlobalVariableGet(StringConcatenate("bvnopen.", Symbol(), ".StopLoss")); if (GlobalVariableCheck("bvnopen.DnDLevel")) DnDLevel = GlobalVariableGet("bvnopen.DnDLevel"); if (GlobalVariableCheck(StringConcatenate("bvnopen.", Symbol(), ".DnDLevel"))) DnDLevel = GlobalVariableGet(StringConcatenate("bvnopen.", Symbol(), ".DnDLevel")); if (GlobalVariableCheck("bvnopen.Sound")) Sound = GlobalVariableGet("bvnopen.Sound"); if (GlobalVariableCheck(StringConcatenate("bvnopen.", Symbol(), ".Sound"))) Sound = GlobalVariableGet(StringConcatenate("bvnopen.", Symbol(), ".Sound")); // Main Algorythm if (BuySell == 0) { if (DropPrice == 0) return; if (DropPrice > Close[DropBar]) Buy = true; if (DnDLevel == -1) Buy = !Buy; } else if (BuySell > 0) Buy = true; if (DnDLevel > 0 && TakeProfit == 0) TakeProfit = MathAbs(DropPrice - Bid) / Point; if (DnDLevel < 0 && StopLoss == 0) StopLoss = MathAbs(DropPrice - Bid) / Point; Print(OrdersNumber); for (int i = 0; i < OrdersNumber; i++) { Dev = i * Pips; Lots = StartLot * MathPow(Magnifier, i); if (Buy) { if (Dev == 0) Cmd = OP_BUY; else Cmd = OP_BUYLIMIT; OpenPrice = NormalizeDouble(Ask - Dev * Point, Digits); // Buy if (StopForEach) SLPrice = OpenPrice; else SLPrice = Ask; if (StopLoss != 0) SL = NormalizeDouble(SLPrice - StopLoss * Point, Digits); else SL = 0; if (TakeProfit != 0) TP = NormalizeDouble(OpenPrice + TakeProfit * Point, Digits); else TP = 0; } else { if (Dev == 0) Cmd = OP_SELL; else Cmd = OP_SELLLIMIT; OpenPrice = NormalizeDouble(Bid + Dev * Point, Digits); // Sell if (StopForEach) SLPrice = OpenPrice; else SLPrice = Bid; if (StopLoss != 0) SL = NormalizeDouble(SLPrice + StopLoss * Point, Digits); else SL = 0; if (TakeProfit != 0) TP = NormalizeDouble(OpenPrice - TakeProfit * Point, Digits); else TP = 0; } Tries = MaxTries; //Print(StringConcatenate(Symbol(), ",", Cmd, ",", Lots, ",", OpenPrice, ",", Slippage, ",", SL, ",", TP, ",", UserComment, ",", Magic)); while (Tries > 0) { if (!OrderSend(Symbol(), Cmd, Lots, OpenPrice, Slippage, SL, TP, UserComment, Magic)) { Check = GetLastError(); Print(StringConcatenate("Error: ", Check, "! ", ErrorDescription(Check))); Sleep(SleepTime); Tries --; } else Tries = 0; } } if (Sound) PlaySound("ok.wav"); //---- return(0); } //+------------------------------------------------------------------+
Вот хорошая статья: Переход с MQL4 на MQL5 https://www.mql5.com/ru/articles/81
Вот эти три строчки сразу следует удалить:
#property show_inputs #include <stderror.mqh> #include <stdlib.mqh>
- 2010.05.11
- Sergey Pavlov
- www.mql5.com
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
//+------------------------------------------------------------------+
#property copyright "_"
#property link "_"
#property show_inputs
#include <stderror.mqh>
#include <stdlib.mqh>
// Прекомпилированные входные значения
// Стартовый размер лота
extern double StartLot = 1;
// Количество ордеров
extern int OrdersNumber = 1;
// Уровень Stop Loss
extern int StopLoss = 0;
// Уровень Take Profit
extern int TakeProfit = 0;
// Расстоя
extern int Pips = 0;
// Уровень Stop Loss для
extern bool StopForEach = true;
// Коэфициент умножения
extern double Magnifier = 1;
// Покупка или продажа: 1 - покупка, -1 - продажа, по умолчанию 0 - определя
// Зависит от DnDLevel, если он 0 или 1, то покупка при бросании выше графика, если -1, то - ниже (подробнее ниже).
// Можно сделать 2 копии скрипта с прекомпилированными значения
extern int BuySell = 0;
// Комментарий
extern string UserComment = "";
// Следующие параметры не вынесены во внешние, так как переключать их каждый раз бессмысленно,
// но их можно поменя
// Определя
// При значении по умолчанию 0 - никакие уровни не устанавливаются
// Если график брошен выше цены, то происходит покупка, ниже - продажа.
// При значении 1 выставля
// При значении -1 выставля
// При этом направление определя
int DnDLevel = 0;
// Допустимое проскальзывание.
int Slippage = 2;
// Количество попыток, в случае ошибки.
int MaxTries = 3;
// Время
int SleepTime = 200;
// Звук вкл./выкл.
bool Sound = true;
// "Волшебный номер", иногда может быть полезно для
int Magic = NULL;
// Дальше ничего меня
//+------------------------------------------------------------------+
//| script program start function |
//+------------------------------------------------------------------+
int start() {
double OpenPrice, Lots, SL, TP, SLPrice;
bool Buy = false;
int Tries, Cmd, Dev, Check;
//----
double DropPrice = WindowPriceOnDropped();
datetime DropTime = WindowTimeOnDropped();
int DropBar = ArrayBsearch(Time, DropTime);
// Check Global Variables
if (GlobalVariableCheck("bvnopen.OrdersNumber"))
OrdersNumber = GlobalVariableGet("bvnopen.OrdersNumber");
if (GlobalVariableCheck(StringConcatenate("bvnopen.", Symbol(), ".OrdersNumber")))
OrdersNumber = GlobalVariableGet(StringConcatenate("bvnopen.", Symbol(), ".OrdersNumber"));
if (GlobalVariableCheck("bvnopen.StartLot"))
StartLot = GlobalVariableGet("bvnopen.StartLot");
if (GlobalVariableCheck(StringConcatenate("bvnopen.", Symbol(), ".StartLot")))
StartLot = GlobalVariableGet(StringConcatenate("bvnopen.", Symbol(), ".StartLot"));
if (GlobalVariableCheck(StringConcatenate("bvnopen.", Symbol(), ".LotMagnifier")))
StartLot = StartLot * GlobalVariableGet(StringConcatenate("bvnopen.", Symbol(), ".LotMagnifier"));
else if (GlobalVariableCheck("bvnopen.LotMagnifier"))
StartLot = StartLot * GlobalVariableGet("bvnopen.LotMagnifier");
if (GlobalVariableCheck("bvnopen.TakeProfit"))
TakeProfit = GlobalVariableGet("bvnopen.TakeProfit");
if (GlobalVariableCheck(StringConcatenate("bvnopen.", Symbol(), ".TakeProfit")))
TakeProfit = GlobalVariableGet(StringConcatenate("bvnopen.", Symbol(), ".TakeProfit"));
if (GlobalVariableCheck("bvnopen.StopLoss"))
StopLoss = GlobalVariableGet("bvnopen.StopLoss");
if (GlobalVariableCheck(StringConcatenate("bvnopen.", Symbol(), ".StopLoss")))
StopLoss = GlobalVariableGet(StringConcatenate("bvnopen.", Symbol(), ".StopLoss"));
if (GlobalVariableCheck("bvnopen.DnDLevel"))
DnDLevel = GlobalVariableGet("bvnopen.DnDLevel");
if (GlobalVariableCheck(StringConcatenate("bvnopen.", Symbol(), ".DnDLevel")))
DnDLevel = GlobalVariableGet(StringConcatenate("bvnopen.", Symbol(), ".DnDLevel"));
if (GlobalVariableCheck("bvnopen.Sound"))
Sound = GlobalVariableGet("bvnopen.Sound");
if (GlobalVariableCheck(StringConcatenate("bvnopen.", Symbol(), ".Sound")))
Sound = GlobalVariableGet(StringConcatenate("bvnopen.", Symbol(), ".Sound"));
// Main Algorythm
if (BuySell == 0) {
if (DropPrice == 0) return;
if (DropPrice > Close[DropBar]) Buy = true;
if (DnDLevel == -1) Buy = !Buy;
} else if (BuySell > 0) Buy = true;
if (DnDLevel > 0 && TakeProfit == 0) TakeProfit = MathAbs(DropPrice - Bid) / Point;
if (DnDLevel < 0 && StopLoss == 0) StopLoss = MathAbs(DropPrice - Bid) / Point;
Print(OrdersNumber);
for (int i = 0; i < OrdersNumber; i++) {
Dev = i * Pips;
Lots = StartLot * MathPow(Magnifier, i);
if (Buy) {
if (Dev == 0) Cmd = OP_BUY;
else Cmd = OP_BUYLIMIT;
OpenPrice = NormalizeDouble(Ask - Dev * Point, Digits); // Buy
if (StopForEach) SLPrice = OpenPrice;
else SLPrice = Ask;
if (StopLoss != 0) SL = NormalizeDouble(SLPrice - StopLoss * Point, Digits);
else SL = 0;
if (TakeProfit != 0) TP = NormalizeDouble(OpenPrice + TakeProfit * Point, Digits);
else TP = 0;
} else {
if (Dev == 0) Cmd = OP_SELL;
else Cmd = OP_SELLLIMIT;
OpenPrice = NormalizeDouble(Bid + Dev * Point, Digits); // Sell
if (StopForEach) SLPrice = OpenPrice;
else SLPrice = Bid;
if (StopLoss != 0) SL = NormalizeDouble(SLPrice + StopLoss * Point, Digits);
else SL = 0;
if (TakeProfit != 0) TP = NormalizeDouble(OpenPrice - TakeProfit * Point, Digits);
else TP = 0;
}
Tries = MaxTries;
//Print(StringConcatenate(Symbol(), ",", Cmd, ",", Lots, ",", OpenPrice, ",", Slippage, ",", SL, ",", TP, ",", UserComment, ",", Magic));
while (Tries > 0) {
if (!OrderSend(Symbol(), Cmd, Lots, OpenPrice, Slippage, SL, TP, UserComment, Magic)) {
Check = GetLastError();
Print(StringConcatenate("Error: ", Check, "! ", ErrorDescription(Check)));
Sleep(SleepTime);
Tries --;
} else Tries = 0;
}
}
if (Sound) PlaySound("ok.wav");
//----
return(0);
}
//+------------------------------------------------------------------+