Как этот код скомпилировать на МТ5

 

//+------------------------------------------------------------------+

#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);

}

//+------------------------------------------------------------------+

 
MADALEX13:

//+------------------------------------------------------------------+

#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);

}

//+------------------------------------------------------------------+

Компиляция -F7  в MetaEditor'e. А для вставки кода на форуме используйте, пожалуйста, кнопку SCR
 
//+------------------------------------------------------------------+

#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);

}

//+------------------------------------------------------------------+
 
Чтобы увидеть явные ошибки со скобками используйте в MetaEditor'e комбинацию клавиш Ctrl+"," (Ctrl плюс запятая), таким образом код автоматически станет визуально более читаем.

 
MADALEX13:


Как успехи? Вычистили ошибки из кода?
 

Вот хорошая статья: Переход с MQL4 на MQL5 https://www.mql5.com/ru/articles/81

Вот эти три строчки сразу следует удалить: 

#property show_inputs
#include <stderror.mqh>
#include <stdlib.mqh>
Переход с MQL4 на MQL5
Переход с MQL4 на MQL5
  • 2010.05.11
  • Sergey Pavlov
  • www.mql5.com
Данная статья, построенная в форме справочника по функциям MQL4, призвана помочь переходу с MQL4 на MQL5. Для каждой функции языка MQL4 приведено описание и представлен способ ее реализации на MQL5, что позволит вам значительно ускорить перевод своих программ с MQL4 на MQL5. Для удобства функции разбиты на группы, как в документации по MQL4.
 
Спасибо попробую
Причина обращения: