MT4のEA作成についてその日の高値から−5pip
の範囲にになったらSするようにはどうしたらいいですか?
高値はhighを使うのはわかったんですが、−5pipのとこが分かりません。
..[補足]..
回答を参考にポイントを使ってみましたができませんでした。
間違っているところがあったら教えてください
iHigh("EURJPY",PERIOD_D1,0)-(50*Point)<MarketInfo("EURJPY",MODE_BID)
回答1
メタトレーダーでPIP指定をするには、ちょっと技術が要ります。
まず、前提として、PIPとPOINTの違いを理解する必要があります。POINTは取引最小値ですが、PIPはちょっと異なります。一般的には、
?少数点以下2桁表示の場合…例 98.23
1POINT=0.01
1PIP=0.01
?少数点以下4桁表示の場合…例 1.3854
1POINT=0.0001
1PIP=0.0001
?少数点以下3桁表示の場合…例 98.234
1POINT=0.001
1PIP=0.010
?少数点以下5桁表示の場合…例 1.38547
1POINT=0.00001
1PIP=0.00010
つまり、小数点以下2桁または4桁表示の業者では、
1PIP=1POINT ですが、
小数点以下3桁5桁業者では、
1PIP=10POINT となります。
そこで、私の場合には、まずグローバル領域に、
double PIP = 0;
と宣言し、次に、init()関数内で、以下のように場合分けします。
int Dig = Digits;
double Points = Point;
if(Dig==3 || Dig==5) PIP = Points*10;
else PIP = Points;
こうすることによって、PIPという単位変数をどんな業者のどんな通貨ペアでもそのまま使えるようになります。ちなみに、上のような場合分けを、init()関数内で記述しておくのは、start()関数の負担を少しでも軽減してEAの稼働を速めるための工夫で、おすすめです。
あとは、start()関数内で、たとえば、「50PIP」ならば、50*PIP と記述すればよいし、「100PIP」ならば、100*PIP と記述すればOKです。
回答2
ショートされるので、
if(Ask<High-5*Point*10) OrderSend(・・・・
とかで書けます。
Originally posted 2019-09-09 18:56:46.