コーディングのヘルプ - ページ 16

 
nontan:
こんにちは、天才コーダーと親切な方々:D

今、簡単なEAを開発していますが、以下の

条件が理解できません。

前のポジションがTake Profitで閉じられたら、次の建値でs/lとt/pで20pipsを設定する新しいエントリーをする。(5Mチャートで)

一つ書いてみました。

if(OrderSelect(1,SELECT_BY_POS,MODE_HISTORY))

//最後のポジションはインスタントオーダー OP_BUY or OP_SELL

{

if(OrderClosePrice() == OrderTakeProfit())

//終値と利食い値が同じ場合

{

if(OrderType() == OP_BUY)/その注文は買い

{

OrderSend(OP_BUY,Lots,Ask,Slippage,SLpips,Ask+20*Point,"",MAGIC);// Lotsやその他の変数は自分で定義

}

else if(OrderType() == OP_SELL)

{

OrderSend(OP_SELL,Lots,Bid,Slippage,SLpips,Bid-20*Point,"",MAGIC);

}

}

Strategy testerで何度も実行しましたが、思ったように動作して

くれません。

どなたかこの質問に対してのヘルプを

お願いします! よろしくお願いします。

[lang=pl]こんにちは。

EAのコード全体を添付していただけますか?

乾杯。

Grzesiek[/lang]

 

...

これを比較して使ってみてください

if (NormalizeDouble(OrderClosePrice(),Digits) == NormalizeDouble(OrderTakeProfit(),Digits))

多分それは役に立つでしょう

nontan:
こんにちは、天才コーダーと親切な方々:D

今、簡単なEAを開発しているのですが、以下の

条件がわかりません。

前のポジションがTake Profitで閉じられたら、次の建値でs/lとt/pで20pipsを設定する新しいエントリーをする。(5Mチャートで)

一つ書いてみた。

If(OrderSelect(1,SELECT_BY_POS,MODE_HISTORY))

//最後のポジションはインスタントオーダー OP_BUY or OP_SELL

{

if(OrderClosePrice() == OrderTakeProfit())

//終値と利食い値が同じ場合

{

if(OrderType() == OP_BUY)/その注文は買い

{

OrderSend(OP_BUY,Lots,Ask,Slippage,SLpips,Ask+20*Point,"",MAGIC);// Lotsやその他の変数は自分で定義

}

else if(OrderType() == OP_SELL)

{

OrderSend(OP_SELL,Lots,Bid,Slippage,SLpips,Bid-20*Point,"",MAGIC);

}

}

Strategy testerで何度も実行しましたが、思ったように動作して

くれません。

どなたかこの質問に対してのヘルプを

お願いします! よろしくお願いします。
 

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

NormarizeDoubleを挿入しようとしたのですが、うまくいきませんでした...。

なぜうまくいかないのか、教えていただけませんか?

---------------------------------------------------

#インクルード

#define MAGIC 20120101

#define COMMENT "Riding9" です。

extern double Lots = 0.1;

extern int Slippage = 3;

extern int SLpips = 20;

extern int TPpips = 50;

extern int StartTime = 1;

extern int FinishTime = 23;

extern int MAPeriod = 48;

int EntrySignal(int magic)

{

double pos = MyCurrentOrders(MY_OPENPOS, magic);

double Ma9 = iMA(NULL, 0, MAPeriod, 0, MODE_SMA, PRICE_CLOSE, 1);

int ret = 0;

if((pos <= 0) && (Close[3] Open[2] && Open[2] >= Ma9) || (Open[2] Ma9)) && (Close[1] > Open[1] && Open[1] > Ma9)) ret = 1;

else if((pos <= 0) && (Open[3] Ma9) && (Close[2] Ma9) && (Close[1] > Open[1] && Close[1] > Ma9)) ret = 1;

if((pos >= 0) && (Close[3] >= Ma9) && ((Close[2] < Open[2] && Open[2] Ma9 && Close[2] < Ma9)) && (Close[1] < Open[1] && Open[1] < Ma9)) ret = -1;// ([pos]=0.0000、[pos]=0.0000、[pos]=0.0000、[pos]=1.0000)。

else if((pos >= 0) && (Open[3] > Ma9 && Close[3] Open[2] && Open[2] < Ma9) && (Close[1] < Open[1] && Close[1] < Ma9)) ret = -1.5;

return(ret);

}

bool MyOrderSendSL(int type, double lots, double price, int slippage, int slpips, int tppips, string comment, int magic)

{

int mult=1;

if(Digits == 3 || Digits == 5) mult=10;

スリッページ *= mult;

if(type==OP_SELL || type==OP_SELLLIMIT || type==OP_SELLSTOP) mult *= -1;

double sl=0, tp=0;

if(slpips > 0) sl = price-slpips*Point*mult;

if(tppips > 0) tp = price+tppips*Point*mult; もし、if(tppips > 0) tp = price+tppips*Point*mult;

return(MyOrderSend(type, lots, price, slippage, sl, tp, comment, magic));

}

int start()

{

if(Hour() >= StartTime && Hour() < FinishTime))

{

int sig_entry = EntrySignal(MAGIC);

if(sig_entry > 0)

{

MyOrderClose(Slippage,MAGIC)。

MyOrderSendSL(OP_BUY, Lots, Ask, Slippage, SLpips,TPpips, COMMENT, MAGIC).を送信します。

}

if(sig_entry < 0)

{

MyOrderClose(Slippage、MAGIC);

MyOrderSendSL(OP_SELL, Lots, Bid, Slippage, SLpips,TPpips, COMMENT, MAGIC).を送信します。

}

if(OrderSelect(1,SELECT_BY_POS,MODE_HISTORY))

{

if (NormalizeDouble(OrderClosePrice(),Digits) == NormalizeDouble(OrderTakeProfit(),Digits))

{

if(OrderType() == OP_BUY)

{

OrderSend(OP_BUY,Lots,Ask,Slippage,SLpips,Ask+20*Point,"",MAGIC);

}

else if(OrderType() == OP_SELL)

{

OrderSend(OP_SELL,Lots,Bid,Slippage,SLpips,Bid-20*Point,"",MAGIC);

}

}

return(0);

}

return(0);

------------------------------------------------------

もし、私の間違いを発見されましたら、ご教示ください。

よろしくお願いします。

 

...

ノンタン

この行は
if (OrderSelect(1,SELECT_BY_POS,MODE_HISTORY))

[/PHP]

最後に閉じた注文ではなく、閉じた注文のキューで最初の(初期残高の後の)注文を選択します。つまり、最後の注文が何であったかをチェックして、それに対応するのではなく、常に1つの固定された注文をチェックして いるのです。もし、最後に閉じた注文(closed orders queueの最後の注文、ただし、metatrader [people] は、close date-timeでソートすると、それが最後であることを保証しないので注意)をテストしたい場合は、このチェック形式を使用します
[PHP]if (OrderSelect(OrdersHistoryTotal()-1,SELECT_BY_POS,MODE_HISTORY))
 

mladenさん、ありがとうございます。

OrderHistoryTotal関数は まだ使ったことがないのですが、このコードには適切な関数ですね。

最終的には、TakeProfitを取得した後、新規にエントリーするようにしました。

企業様、皆様、ありがとうございました。

 

マスターコーダーの力を借りたい

こんにちは、私は私の戦略をコード化するために誰かを必要とするしてください。

 
johnray:
こんにちは、私は私の戦略をコード化するために誰かを必要とするしてください。

[lang=pl]ただ、私に詳細を与える。

乾杯[/lang]。

 

PMを送りました

g.pociejewski:
[lang=pl]ただ私に詳細を与える Cheers[/lang].

thanks master i sent a pm. its little bit complicated.

 

自動更新のためのコード

常に更新が必要なインジケータを使用しています。15分足チャートを使用しているので、毎ティック 更新する必要はありませんが、大きな電力消耗がないのであれば、それは良いことです。少なくとも、各リフレッシュの間の時間間隔のオプションがあるべきです。今は、ドロップダウンの 'Charts' タブを使用して、'Refresh' を選択して、手動で1分おきくらいにリフレッシュしています。

インディやチャートを自動的に更新するコードや方法は、インディやEAに追加のコードを通してありますか?

ありがとうございます、el bee

 

[langtitle=fr]オリジナル指標WilderのParabolic Sar[/langtitle]を探しています。

[lang=fr]です。
こんにちは

ワイルダーのパラボリックSAR、キプロコのオリジナルを捜しています。このインジケーターのコードはPRTプラットフォーム用に作成したのですが、MT4でのコーディングが分かりません。

もし、MT4のコーディングに詳しい方がいらっしゃいましたら、プライベートメッセージ で、このインジケーターをMT4で使えるようにするためのコードをお渡しします。

ありがとうございます。
[/lang]