qgmql: この理屈が理解できないし、実際どうなんだろう。
文字列をセミコロンで分割し、部分文字列をdoubleに変換し、動的配列に値を格納して います。
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(){ ... }
あなたが言ったことは大丈夫です。問題は残りのコードにあります。私は2つのエラーを受け取ります(新しいメタエディタにおいてのみ)。
'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なら、どのタイムフレームでも動作するはずです。
qgmql:
そうですね、修正しました。現在、タイムフレームのコードでエラーが発生しています。
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.
古いエディタではすべてOKでしたが、新しいエディタではエラー行の後のコードで引用された警告がまだ出ています。
//+------------------------------------------------------------------+ //| 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 コード全体を貼り付けました。
qgmql:
古いエディタではすべてOKでしたが、新しいエディタではエラー行の後のコードで引用された警告がまだ出ています。
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千を超えるシグナルをコピー
- 金融ニュースで金融マーケットを探索
他のEAやIndisのコードを参考にしながら、自分のストラテジーに基づいたEAを作ろうとしているのですが、今ひとつ行き詰まりを感じています。
このロジックが何なのか、理解できないのです。
追記:友人が私のストラテジーを気に入ってくれて、このEAを作りました。しかし、私は両方(EAとそのコーダーの友人の連絡先)を失ったので、今、私はこのストラテジーをもう一度コード化したいので、私の非常に基本的なコーディング知識をテストしようとしているのです。