///////////////////////////////////////////////////////////////////////////////////////////////////////double iMAf( string symbol, ENUM_TIMEFRAMES timeframe, int period, int mama_shift, ENUM_MA_METHOD mama_method, int applied_pricece, int shift){
Print ( " iMAfsymbol ",symbol," iMAftimeframe ",timeframe," iMAfperiod ",period," iMAfmama_shift ",mama_shift ," iMAfmama_method ",mama_method,
" iMAfapplied_pricece ", applied_pricece," iMAfshift ",shift);
MA_handle=iMA(symbol,timeframe,periodd(period),mama_shift, mama_method,applied_pricece);Sleep(2000);
//--- если не удалось создать хэндлif(MA_handle==INVALID_HANDLE)
{
//--- сообщим о неудаче и выведем номер ошибкиPrintFormat("Не удалось создать хэндл индикатора iMA для пары %s/%s, код ошибки %d",
symbol,
EnumToString(timeframe),
GetLastError()); ResetLastError();return (0.0);}
CopyBuffer( MA_handle,0,0,100,MA);
ArraySetAsSeries(MA,true);
if(shift>99) return(0);
return( (MA[shift])); }
///////////////////////////////////////////////////////////////////////////////////////////////////////
正確な値は出ているのですが、「Obem_Pozic」の値を1.00にすることができず、表示するためのロットを計算することができません、正規化したいわけでもなく、ただ小数点以下4桁が出てしまうのです。
MQL4で書いています。
MQL4については該当するフォーラムで質問しているのですが、ここではAです。
より正確な値を画面に表示するには、DoubleToStr() を使用する必要があります。
このペアは、おそらく端子から提供されているので、接続するだけでよい。手動であれば、Market Watchで。そして、大人しくしていれば、SymbolSelect() を使う必要があるのです。
一つエラーが出ると、他のエラーも出てきます。最初のエラーは、端末の下の方にあります。だから、最初のエラーをなくすようにして、それから考えるべきだね :)
ありがとうございます!!!非常によく理解でき、美しく書かれている。私のEAにはSymbolSelect()があります。pgにコード付きで掲載しました。53、必要なら見ることができる。ヘルプで確認したところ、正しい!!!!では、このペアが端末から提供された場合、どう考えればいいのでしょうか?
さらに、First in lineのエラーが端末の最下部にある場合。プリンタのエラーメッセージと端末のメッセージが交互に表示されるのはなぜですか - いいえ、まとめて表示されるのです。
もしかしたら、端末がこの関数からのエラーを報告していないのでは?
はい、わかります。こんな風にやってみよう。
ありがとうございます!!!!!
可変時間枠のプリントはどのようなものなのか教えてください、デジタルでもいいのでしょうか?1が表示されていますね。
理由を聞いているんです。これは関数で、プリントのある線を持っています。それに伴い、上から2番目のもの。
以下は、その関数呼び出し です。
なお、コールラインでは別の関数を使用しています。時間軸を納得させるために使用されます。私のExpert Advisorは4からピリピリしているので、そうなのでしょう。ケースオープナーを 使用しています。その後、念のため、FをF4タイムフレームに追加して、さらに使い込んで います。
そして、これが私の見たものです。
さて、このコードのすぐ下に使われているのは
EnumToString(timeframe),
どこに問題がありそうなのか、わかったような気がします。これから記述します。
画像から、EAがM1、時間枠==1、期間==140で 動作していることがわかります。これでいいのでしょうか?
timeframe==1という値は、timeframe==M1である可能性が高いです。同時に、periodd(period)の項目はperiodd(140)を意味します。 コードによると、periodd(140)関数はPERIOD_CURRENT 値を返さなければなりません。つまり、periodd(140)==M1であることが判明したわけです。
つまり、iMAの呼び出しは次のようになります。 iMA(symbol,M1,M1...) iMAを計算するときに、第2引数の値と第3引数の値が一致する(つまり、期間が平均化期間と一致する)ことが許容されるかどうかはわかりませんが、何かが間違っているような気がしています。