Я пытаюсь написать советника, основанного на моей собственной стратегии, с использованием кода из некоторых других советников и инди. но сейчас застрял на одной вещи.
<удалено>
Пожалуйста, используйте кнопку SRC для размещения кода . . .
extern string LotsProgression="0.1;0.1;0.2;0.3 ... double lots[]; // [0]=0.1 [1]=0.1 [2]=0.2 [3]=0.3 [34]=661.1 int plen; // 35 int init(){ ... }
То, что вы упомянули, в порядке. Проблема в остальной части кода. Я получаю две ошибки (только в новом метаредакторе).
'init' - function can be declared only in the global scope and 'init' - function already defined and has body
Да, я понял это и исправил. Теперь получаю ошибку в коде таймфрейма.
//--- EA PARAMETERS extern int EA_TF=240; extern bool Forced_TF=True; bool TF; if(Forced_TF != True) TF = EA_TF; //These two lines i think, have error. else TF = Period(); //New metaeditor is not accepting "TF = EA_TF;" from above line.
Если Forced_TF имеет значение true, то советник должен торговать и получать сигналы только с указанного таймфрейма, даже если активный график (на котором я размещаю советник) открыт на другом таймфрейме. Если значение false, то он должен работать на любом таймфрейме.
Да, я понял это и исправил. Теперь получаю ошибку в коде таймфрейма.
Если Forced_TF имеет значение true, то советник должен торговать и получать сигналы только с указанного таймфрейма, даже если активный график (на котором я размещаю советник) открыт на другом таймфрейме. Если значение false, то советник должен работать на любом таймфрейме.
У вас TF имеет значение bool . .. но вы пытаетесь установить его в int... попробуйте это ...
//--- EA PARAMETERS extern int EA_TF=240; extern bool Forced_TF=True; int TF; if(!Forced_TF) TF = EA_TF; //These two lines i think, have error. else TF = Period(); //New metaeditor is not accepting "TF = EA_TF;" from above line.
@RaptorUK Я понял вас. и снова все в порядке со старым редактором, но новый редактор все еще выдает одно предупреждение, процитированное в коде после строки ошибки,
//+------------------------------------------------------------------+ //| 01Multi_EA.mq4 | //| Copyright © 2004, MetaQuotes Software Corp. | //| http://www.metaquotes.net/ | //+------------------------------------------------------------------+ #property copyright "Copyright © 2004, MetaQuotes Software Corp." #property link "http://www.metaquotes.net/" #property version "1.00" #property strict //--- input parameters input int EA_TF=60; input bool Forced_TF=True; input int MagicNumber=12345; input int FastMA_Period=5; input int FastMA_Shift=0; input int FastMA_Method=1; input int FastMA_Price=0; input int SlowMA_Period=34; input int SlowMA_Shift=0; input int SlowMA_Method=1; input int SlowMA_Price=0; input string LotsProgression="0.01;0.02;0.03;0.04;0.05;0.06;0.07;0.08;0.09;0.10;0.11;0.12;0.13;0.14;0.15;0.16;0.17;0.18;0.19;0.20"; input bool NewCycle=True; input int Limit_TP=50; input bool Use_TP=False; input int Limit_SL=50; input bool Use_SL=False; input int MaxSlippage=3; input int OrderTries=10; int TF, Plen; double TP, SL, pips2dbl, pips2point, pipValue, Slippage, Lots[]; //+------------------------------------------------------------------+ //| Expert initialization function | //+------------------------------------------------------------------+ int OnInit() { //---- if(Forced_TF != True) TF = EA_TF; else TF = Period(); int i,j,k; string ls; while (true) { j=StringFind(LotsProgression,";",i); if(j>0) { ls=StringSubstr(LotsProgression,i,j-i); // <<<<<"possible use of uninitialized variable 'i' 01Multi_EA.mq4 46 38">>>>> i=j+1; k++; ArrayResize(Lots,k); Lots[k-1]=StrToDouble(ls); } else { ls=StringSubstr(LotsProgression,i); k++; ArrayResize(Lots,k); Lots[k-1]=StrToDouble(ls); break; } } Comment("Copyright © 2004, MetaQuotes Software Corp."); if (Digits == 5 || Digits == 3) { pips2dbl = Point*10; pips2point = 10; pipValue = (MarketInfo(Symbol(),MODE_TICKVALUE))*10; } else { pips2dbl = Point; pips2point = 1; pipValue = (MarketInfo(Symbol(),MODE_TICKVALUE))*1; } Slippage = pips2dbl*MaxSlippage; TP = pips2dbl*Limit_TP; SL = pips2dbl*Limit_SL; //---- return(INIT_SUCCEEDED); }
@WHRoeder Вставил весь код.
@RaptorUK Я понял вас. и снова все в порядке со старым редактором, но новый редактор все еще выдает одно предупреждение, процитированное в коде после строки ошибки,
@WHRoeder Вставил весь код.
Это не ошибка, а предупреждение... чтобы избавиться от предупреждения, инициализируйте переменную, а не просто объявляйте ее. В mql4 при объявлении переменной она также инициализировалась, теперь в mql4.5 вы должны явно инициализировать переменную, если хотите...
int i = 0, j, k; // i initialised to 0
pipValue = (MarketInfo(Symbol(),MODE_TICKVALUE))*10;Не используйте tickvalue само по себе https://www.mql5.com/en/forum/133792/page3#512466.
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Я пытаюсь создать советника на основе своей собственной стратегии, используя код некоторых других советников и инди. но сейчас застрял на одной вещи.
Я не могу понять эту логику или что это на самом деле.
PS: другу понравилась моя стратегия, и он создал этого советника. Но я потерял обоих (советника и контакт друга-кодера), так что теперь я пытаюсь проверить свои базовые знания кодирования, так как я очень хочу, чтобы эта стратегия была закодирована снова.