どんな新人の質問でも、フォーラムを乱雑にしないように。プロフェッショナルは、通り過ぎないでください。Nowhere without you - 6. - ページ 695

 
jekk:

こんにちは!保留中の注文を処理するために助けてください。例えば、インジケータで保留の注文をしなければなりません。どう書けばいいのでしょうか?

Price = NormalizeDouble (iMA(Symbol(),TimeFrame_D1, EMA_Period_21,0,MODE_EMA,PRICE_MEDIAN,0)+1*Point,Digits);// これをどう修正するのか?

SL = NormalizeDouble (Ask- StopLoss*Point,Digits);

TP = NormalizeDouble (Level_plus_1500_D1,Digits); // これは利益確定用 - Level_plus_1500_D1 - EMAレベル?

OrderSend(Symbol(),OP_BUYLIMIT,Lots,Price,Slippage,SL,TP,NULL,Magic,0,clrLime)。


Price =  NormalizeDouble (iMA(Symbol(),PERIOD_D1, EMA_Period_ 21,0,MODE_EMA,PRICE_MEDIAN,0)+1*Point,Digits);// как правильно прописать эту строчку? 
 TP = NormalizeDouble (Level_plus_1500_D1-iMA(Symbol(),PERIOD_D1, 21,0,MODE_EMA,PRICE_MEDIAN,0),Digits); // и эту для профита -  Level_plus_1500_D1 - уровень ЕМА  ?

ヘルプを読めば、すべて書いてあり、非常にわかりやすい。

そして、SLとTPは、相場からではなく、注文の価格(Price)から設定した方が、何となく筋が通っているような気がします。

 
evillive:

ヘルプを読めば、すべて書いてあり、とてもわかりやすい。

また、SLやTPは市場価格からではなく、注文の価格(Price )から設定する方が理にかなっています。

ありがとうございました。
 

この記事で書かれている関数 https://www.mql5.com/ru/articles/1357 を使ってみました。 この関数のシグナルによってどのように注文が開かれるかを確認しようと思い、簡単なコードを書いてみました。

メタトレーダーはこんな感じで出てきます。

引用符がおかしいのか、ファンクションコードがおかしいのか、どうすればいいのかわかりません。

ファンクションコードを添付します。

ファイル:
func_ad.mqh  33 kb
 
LBatters:

こんにちは、皆さん、この問題について助けてください。私はこの記事https://www.mql5.com/ru/articles/1357 に書かれている関数で作業しています。この関数からのシグナルによってどのように注文が開かれるかをチェックしようと思い、いくつかの簡単なコードを書きました。

メタトレーダーはこれを出します。

どうしたらいいんだろう。

関数のコードを添付します。


おそらくトレーラーでは同じ関数ではなく、この59行目には配列を使ったものはなく、2枚目のスクリーンショットでは59行目で、明らかに配列の外側でエラーになっています。
 
evillive:

おそらくトレーラーでは同じ関数ではないと思います。この中では59行目に配列を使ったものはなく、2枚目のスクリーンショットによると、明らかに配列の外側でエラーになっています。

いや、コメントしてたからセリフが動いただけなんですけどね。

まとめたのがこちら。

ファイル:
func_ad1.mqh  63 kb
 
LBatters:

いや、コメントしてたからセリフが動いただけなんですけどね。

まとめたのがこちら。


こころがける
for (i=2; i<=nBars-2; i++)
 
evillive:

トライ
for (i=2; i<=nBars-2; i++)


は!今、1つのトレードが開いて、それはテストの終わりです、なぜ2を減算するのか理解できませんか?
 
LBatters:

は!今、1つの取引が始まり、それはテストが終了したところです、なぜ2を減算するのか理解できませんか?


インラインにはもっと多くの配列があり、おそらくすでにつまずいているのでしょう。それとも、やはり59行目に文句があるのでしょうか?

そして引き算ですが、算数は単純で、100個の要素がある場合、その番号付けは0...99(nBars=100 なので、99はまさにnBars-1)、したがって、あなたのアルゴリズムで1(0と2バーを比較)から98(97と99バーを比較)、99でそれはすでに配列から 離れるでしょうカウントできるようになるのです。

 
evillive:


インラインにはもっと多くの配列があり、おそらくすでにつまずいているのでしょう。それとも、やはり59行目に文句があるのでしょうか?

そして引き算ですが、演算は簡単で、100個の要素がある場合、その番号は0...99(99はまさにnBars-1)なので、アルゴリズムで1(0と2のバーを比較)から98(97と99のバーを比較)まで数え、99で配列から外れてしまいます。


でも、less or equal、つまり99は含まれていますよね? 注文開始 時に130のエラーが出ます。

 
LBatters:


99が含まれています。 そうではありませんか? 注文開始時に130エラーが表示されます。


i=99に到達し、これが最後の要素である。

if (TempIND[i]<TempIND[i-1] && TempIND[i+1]>=TempIND[i])

i+1] はどこにあるのか?