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인 경우 활성 차트(내가 EA를 배치한)가 다른 시간대에 열려 있더라도 EA는 거래해야 하며 언급된 시간대에서만 신호를 받아야 합니다. 값이 false이면 모든 시간대에서 작동해야 합니다.
네 확인하고 수정했습니다. 이제 타임프레임 코드에서 오류가 발생합니다.
Forced_TF가 true인 경우 활성 차트(내가 EA를 배치한)가 다른 시간대에 열려 있더라도 EA는 거래해야 하며 언급된 시간대에서만 신호를 받아야 합니다. 값이 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
다른 EA 및 indis의 코드를 사용하여 내 자신의 전략을 기반으로 EA를 코딩하려고 합니다. 하지만 지금은 한 가지에 갇혀 있습니다.
나는 이 논리나 그것이 실제로 무엇인지 이해할 수 없다.
추신: 친구가 내 전략을 좋아했고 이 EA를 만들었습니다. 하지만 저는 둘 다(EA와 그 코더 친구의 연락처)를 잃었습니다. 그래서 지금은 이 전략을 다시 코딩하기를 정말로 원하기 때문에 매우 기본적인 코딩 지식을 테스트하려고 합니다.