コーディングの方法は? - ページ 166

 

ご回答ありがとうございます。

が、これってポジションクローズ時にスリッページがあった場合、機能しないんですよね?

 
codersview:
こんにちは、皆さん。

RSIとMAのEAで問題が発生したのですが・・・。

インジケータは正常に動作しているのですが...それをEAに変換したいだけなのですが...。

いくつかのことを試してみました。IndicatorCounted()がEAで動作しないので、forループの値をハードコードしてみました(bar=0; bar<15; bar++)、私は正しいRSIを得ていましたが、SMAは正しい値を与えません...。

SMAがRSIと交差するコードを添付します。

このインディケータをEAに変換するために、どなたか助けていただけませんか?

***************************************************************************************************************************************

#property indicator_separate_window(プロパティ インジケーターセパレートウィンドウ

#property indicator_buffers 2(プロパティ インジケータバッファ2

#property indicator_color1 LawnGreen (インジケータカラー1)

#property indicator_color2 DarkBlue (インジケータカラー2 ダークブルー)

double ExtMapBuffer1[];

double ExtMapBuffer2[]です。

int init()

{

IndicatorDigits(MarketInfo(Symbol(),MODE_DIGITS));

SetIndexStyle(0,DRAW_LINE))。

SetIndexBuffer(0,ExtMapBuffer1)。

SetIndexStyle(1,DRAW_LINE,STYLE_SOLID,2); SetIndexBuffer(1,DRAW_LINE,STYLE_SOLID,2);

SetIndexBuffer(1,ExtMapBuffer2)を設定します。

return(0);

}

int deinit()

{

return(0);

}

int start()

{

int bar, limit;

int counted_bars=IndicatorCounted();

if(counted_bars<0)リターン(-1);

if(counted_bars>0) counted_bars--;

limit=Bars-IndicatorCounted()。

for(bar=0; bar<limit; bar++)

ExtMapBuffer1 = iRSI(NULL,0,14,PRICE_TYPICAL,bar);

for(bar=0; bar<limit; bar++)

ExtMapBuffer2=iMAOnArray(ExtMapBuffer1,Bars,14,0,MODE_SMA,bar)。

return(0);

}

***************************************************************************************************************************************

ありがとうございます&よろしくお願いします。

ガネーシュ

Ganesh,

バーを時間順に並べてみてください。

for(bar=0; bar<limit; bar++) の代わりに

for(bar=limit-1; bar>=0; bar--)を使ってください。

チャズモニー

 

こんにちは

迅速な対応ありがとうございました...試してみたのですが、特に違いはありませんでした...

ループの中でBarsを使うと、すべてのバーの値を計算しなければならず、遅延が発生する可能性があります。また、SMAの値もゼロになります。

インディケータではIndicatorCounted()を使って新しいバーに対してのみRSIとEMAを計算していますが、EAではそれを使うことができません。

問題の正確なポイントは、2番目のループとiMAOnArrayの値です。

最初のforループはハードコードしても完全に動作します。

 
jan100:
ご返答ありがとうございます。しかし、これってポジションクローズ時にスリッページがあった場合は使えないんですよね?

ブローカーによっては、コメント欄に[sl]や[tp]と書いているところもあります。それを利用することもできます。

 

ありがとうございます、やってみます。

最後に閉じた注文を正しいマジックナンバーで選択することは可能ですか?

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

履歴リストで見つけた場合はクローズド・オーダー、トータル・リストで見つけた場合はオープン・オーダーです。

 

Eaコードのリクエスト新しいポジションを持つときに前の注文を閉じる

こんにちは、私は新しいポジションが開かれたときに、自動的に前の順序が閉じられるようにコードを要求したいと思います。

買いの注文が開始されると、前の注文の売りが閉じられます。

売り注文が開始されると、前の注文の買いが閉じられます。

OrderCloseBy()というコードを見つけたのですが、このコードをどこに書けばいいのかよくわかりません。

感謝

 
darkkiller:
新しいポジションがオープンされると、自動的に前のオーダーがクローズされるようなコードをリクエストしたいのですが、テイクプロフィットやトレーリングを使用したくないという意味です。

買いの注文が開始されると、前の注文の売りが終了します。

売りの注文が開いたら、前の買いの注文を閉じる

OrderCloseBy()というコードを見つけたのですが、このコードをどこに書けばいいのかわかりません。

ありがとうございます。

問題解決

OrderSend BUYの後に置く

{

OrderClose(OrderTicket(),OrderLots(),Bid,3,Violet); // ポジションクローズ

}

売りのオーダーを送信した後に置く

{

オーダークローズ(OrderTicket(),OrderLots(),Ask,3,Violet); // クローズポジション

}

その他のコードはForexFactoryから入手したものです(Fulltime247,magnumfreak)。

extern int MAGICTerminal=101;

extern double LOTSize=0.10;

extern string ORDERComment="注文コメントテキスト";

//TOTAL カウント...

int btotal=0; int stotal=0; int ticket=0; double closelots=0; bool xbool;

for( int cnt=OrdersTotal()-1;cnt>=0;cnt--)

{

xbool=OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);

if(OrderType()==OP_BUY && OrderMagicNumber()==MAGICTerminal && OrderSymbol()==Symbol()){btotal++; ticket=OrderTicket(); closelots=OrderLots();}; orderType()==OP_BUY && OrderMagicNumber()==MAGICTerminal && OrderSymbol()

if(OrderType()==OP_SELL && OrderMagicNumber()==MAGICTerminal && OrderSymbol()==Symbol()){stotal++; ticket=OrderTicket(); closelots=OrderLots();}; }/ }/ } END TOTAL ORDER?

}// END TOTAL count...

if(WHATEVER YOUR CONDITION FOR BUY)

{

if(btotal>0){OrderClose(ticket,closelots,Bid,3,CLR_NONE);}; } {OrderClose(ticket,closelots,Bid,3,CLR_NONE)

ticket=OrderSend(Symbol(),OP_BUY,LOTSize,Ask,3,0,0,ORDERComment,MAGICTerminal,0,Magenta).を送信します。

}

if(WHATEVER YOUR CONDITION FOR A SELL)

{

if(stotal>0){OrderClose(ticket,closelots,Ask,3,CLR_NONE);}.

ticket=OrderSend(Symbol(),OP_SELL,LOTSize,Bid,3,0,0,ORDERComment,MAGICTerminal,0,Lime) { if(stotal>0) { OrderClose(ticket,closelots,Ask,3,CLR_NONE);};

}
 
 

MT4初心者です。

shortMAがlongMAを越えてから何本目のバーかを 計算したいのですが、どなたかこの関数をコーディングする方法をご存知でしょうか?

よろしくお願いします。