アスク! - ページ 134

 
bakhul:
このフィルターにアラートを追加して、0レベルを超えたり、色が変わったりするのを助けてくれませんか? 助けてくれる方、ありがとうございます。

多分、ここに投稿した方が運が良いのでしょう。https://www.mql5.com/en/forum

 

EAから現在開いている買い、売り注文は いくつありますか?

私はちょうど誰かがすでにこの質問に答えていたことを期待して134ページを通過しました。しかし、私は運が悪かった...

クロスオーバー、ピボットポイント、ATRレンジ、ブレイクアウトなど、私が持っている何百ものインジケータを使って考えられるあらゆるタイプのものを作成し、調整した後。本格的な自動売買EAには大量の変数が必要で、それをコード化する必要があることに気づいたんだ。そこで私は代わりに、ユーザー支援型のEAを作り始めました。さて、手元にある質問ですが...

EAが現在マーケットで開いている買い注文と売り注文をカウントするために、どのようなコードを使用できますか?

私は、EAが出した現在の注文を相殺するために、同じ口座に注文を出すので、合計で何件の未決済注文があるかをカウントさせたくありません。

最終的には、ヘッジ目的で買い注文と売り注文の比率を変更するフィルタを設定したいと思います。

 

ちょっと助けてください。

皆さん、こんにちは。

当初は新しいスレッドとして投稿したのですが、他のプログラミングスレッドに移動され(ちなみに移動に異論はありません)、そのスレッドの投稿者の多さのため、現在迷子になっているようです。

おそらく、ここの誰かが私を助けることができますか?

私は7日間試行錯誤とカット&ペーストと何時間も研究して、最初のEAをほぼ完成させました...。

どなたか、EAに終了または停止機能を 発行する方法を教えていただけませんか?

私はEAが現在の取引と保留中の取引をすべて削除し、資本が10,000に達した後に終了するようにしたいのです。以下は、これまでのコードの一部です。

bool StopTrade;

int total = OrdersTotal(), cnt = 0, ExitAtEquity=10000;

for (cnt = total ; cnt >=0 ; cnt-- )

{

OrderSelect(0,SELECT_BY_POS,MODE_TRADES);

if (AccountEquity ()== ExitAtEquity)//(TimeCurrent()- OrderOpenTime() >= ActiveMinutes*60 )

{if(OrderType()==OP_BUY)

OrderClose(OrderTicket(),OrderLots(),Bid,3,Red);

if(OrderType()==OP_SELL)

OrderClose(OrderTicket(),OrderLots(),Ask,3,Red);

if(OrderType()>OP_SELL)

OrderDelete(OrderTicket());

StopTrade=true;}

}

if (dclose==dopen && OrdersTotal() < ConcurrentTrades && StopTrade != true)

ご覧のように、EAはEquityを見てから、StopTrade変数のbool値をtrueに設定します。その後、EA はコマンドを確認し、StopTrade != true の下では 1 サイクルの間何も処理しませんが、その後 StopTrade の bool 値はリセットされ、取引は継続されると推測されます。

まず、私がやっている方法で、必要なことをさせる方法はありますか?

次に、EAに終了を指示するために使用できる関数はありますか?

すべての援助は非常に感謝されます。

NB.

cutzpr - How Many Currently open Buy, and Sell Orders from EA

私のコードの一部は、あなたが必要とするもののためにあなたを助けることができると思います。

 

しかし、EAに何を伝えれば、EAが出した注文 だけを見て、私が手動で出した注文を無視するようになるのかが分かりません。ありがとうございます。

 

マジックナンバー

cutzpr - マジックナンバーを使用して、次のようなものを使用する必要があります。

for (cnt=total;cnt>=0;cnt--)

{

OrderSelect(0,SELECT_BY_POS,MODES_TRADES);

if (OrderMagicNumber()==yourmagicnumber)

{if(OrderType()==OP_BUY)

 

そのコードを見て、私は以下のようなコードを思いつきました。ちゃんとコーディングできているかは不明です。私が設定したのは

int MaxLong=5,MaxShort=5;

extern double Magic=10000;

extern int MaxOpenOrders=10としました。

ということで...

if (b<=MaxLong)

{trade

}

if (s<=MaxShort)

{trade

}

しかし、EAはまだ最大買いと最大売りを送信しています。代わりに、それぞれの注文が何であるかをカウントし、MaxLongとShortに自分自身を制限します。私はコードで何か間違っている必要があります知っているが、私はそれを見ることはできません。

for (int cnt = total ; cnt >=0 ; cnt-- )

{

OrderSelect(0,SELECT_BY_POS,MODE_TRADES);

if (OrderMagicNumber()==Magic)

{if(OrderType()==OP_BUY)

{

b++; // add order to Long Quantity

if(TP != 0)

{

if(b!= 0)

{

if(Bid >= ((OrderOpenPrice()+TP*Poin)+Spread))

{

OrderClose(OrderTicket(),OrderLots(),Bid,3,Green); // Long position closed.

CMT=OrderCloseTime();

b--; // Long Order closed. Remove one order from total Longs

return(0);

}

}

}

}

if (OrderMagicNumber()==Magic)

{if(OrderType()==OP_SELL)

s++; // Add one to Short order Quantity

if (TP != 0)

{

if(s!= 0)

{

if(Ask <= ((OrderOpenPrice()-TP*Poin)+Spread))

{

OrderClose(OrderTicket(),OrderLots(),Ask,3,Green); // Short position closed.

CMT=OrderCloseTime();

s--; // Short Order Closed. Remove one order from total shorts

return(0);

}

}

}

}

}
 
cutzpr:
このコードを見て、私は次のようなコードを思いつきました。このコードを見て、私は以下のようなコードを思いついたのですが、正しくコーディングされているでしょうか?私がセットアップしたのは

int MaxLong=5,MaxShort=5。

extern double Magic=10000;

extern int MaxOpenOrders=10;

というわけで...

if (b<=MaxLong)

{trade

}

if (s<=MaxShort)

{trade

}

しかし、EAはまだ最大買いと最大売りを送信しています。代わりに、それぞれの注文が何であるかをカウントし、MaxLongとShortに自分自身を制限します。コードに何か問題があるはずなのですが、それが見当たりません。

あなたは物事を複雑にしすぎていると思います。1つの大きな関数の 代わりに、いくつかの短いコードの部分を使用してみてください。そうすれば、何かヒントが得られるはずです。

int totalOrders(int type)

{

int totalNumber = 0;

for (int cnt = total ; cnt >=0 ; cnt-- )

{

OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES);

if (OrderMagicNumber() == Magic && OrderType() == type) totalNumber++;

}

return(totalNumber);

}

[/CODE]

AND HERE IS EXAMPLE HOW YOU CAN USE IT

[CODE]

int totalBuy = totalOrders(OP_BUY);

int totalSell = totalOrders(OP_SELL);

if( (totalBuy + totalSell) < MaxOpenOrders)/*TOTAL NUMBER OF ORDERS WASN'T REACHED*/

{

if(totalBuy <= MaxLongOrders)

{

//OPENING LONG IS PERMITED

}

if(totalSell <= MaxShortOrders)

{

//OPENING SHORT IS PERMITED

}

}

 

[ASK】インジケーター "SilverTrend_Signal"

私はFXとmql4プログラミングの 初心者です。私はSilverTrend_Signalというインジケータ(ここに添付します)を持っています。

このインジケーターからEAを作りたいのですが、このインジケーターには問題があります。

同じバーでシグナルが変わることがあります。例えば、チャートに上昇トレンドのシグナルの矢印が表示された後、消えてしまい

同じバーで下降トレンドのシグナルに変わることがあります。この問題を解決するために誰か助けてくれませんか?

私はこのインディケータをM1タイムピリオドとEUで使用しています。

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

(すみません、私の英語力は十分ではありません。)

ファイル:
 

個人的な意見ですが、シグナルをリペイントするようなインジケータは 使わない方がいいと思います。特にM1チャートでは。シグナルが頻繁に変わりすぎるからです。シグナルが安定せず、トラブルを招くだけです。過去の履歴は過去だからよく見える。

 
willya:
私は外国為替とmql4プログラミングの初心者です。私はインジケータSilverTrend_Signal(私はここに添付)を持っていると

このインディケータでEAを作りたいのですが、このインディケータには問題があります。

同じバーでシグナルが変わることがあります。例えば、チャート上に上昇トレンドのシグナル矢印が表示された後、消えてしまい

同じバーで下降トレンドのシグナルに変わることがあります。この問題を解決するために誰か助けてくれませんか?

私はこのインディケータをM1タイムピリオドとEUで使用しています。

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

(すみません、私の英語力は十分ではありません)

このインジケーターがどのようにリペイントされるかはわかりませんが、もし現在のバーのみでリペイントされるのであれば、バー(確定)のクローズでシグナルを使用すれば問題ないでしょう。

もし、現在のバーよりも多くリペイントするのであれば、そのシグナルをEAに使用するのを忘れることができます。

FerruFx