EAが買い注文と売り注文を混在させる - ページ 2

 

eaの全体像と使い方がわからないと、何が問題なのか推測するしかありません。この文を渡すために正しい順序を選択していると仮定すると。

while (!OrderSelect(cnt, SELECT_BY_POS)) {Sleep(500);}

パスするわけがない。

if ((orderType == OP_BUY || orderType == OP_BUYSTOP)) {

もしOp_Sellなら同じSymbolの複数のチャートでやっているのなら別ですが。

喧嘩腰のwhileループを使っているところを見るとこれはおそらくRapid Order Makerの一種だろう。

私の最終的な推測ではOrdertypeチェックの後、選択された注文が 変わる :)

それ以外は、Raptorのようにprint文を多用することをお勧めします。

 
  1. orderSelectの後、選択された注文を 変更することはできません。
  2.  for(cnt = total-1; cnt >= 0; cnt--)  {
          while (!OrderSelect(cnt, SELECT_BY_POS)) {Sleep(500);}
    もし orderSelect が失敗すれば、それは継続的に失敗し、無限ループに陥ります。もし、自分のチャートを更新している間に、別のチャートで複数の注文がクローズしたら、次の反復のセレクトは失敗します。非常に危険です。
 

Ticket番号を出力しましたが、OrderType()と一致しません。


選択された注文が OP_BUYタイプであれば、正しいifが処理されますが、OrderModify(...)の呼び出しで、最初のパラメータとしてOrderTicket()を渡しましたが、それは他の注文のチケットです。


何か思い当たることはありますか?

 
dvarrin:

何か思い当たることはありますか?

おそらく、すでに終了した注文を変更しようとしているのでしょうか? 取引を選択するプールが指定されていません。

OrderSelect( int index, int select, int pool=MODE_TRADES) 
MODE_TRADES (デフォルト) - 取引プールから選択された注文(オープンおよび保留中の注文),

MODE_HISTORY - ヒストリープールから選択された注文(クローズされ、キャンセルされた注文)。


	          
 
RaptorUK:

おそらく、すでに決済された注文を変更しようとしているのでしょうか? 取引を選択するプールを指定していないのでしょうか?

MODE_TRADES(デフォルト) - トレーディングプール(オープンオーダーとペンディングオーダー)から選択されたオーダーです。

MODE_HISTORY - history pool (closed and canceled order)から選択された注文。


私も試してみましたが、何も変わりませんでした。使いたい選択された注文 のデータを全部保存しておかないといけないようです。


int ticket=0;

倍 SL = 0.0です。

OrderSelect(cnt, ...);

ticket = OrderTicket();

SL = OrderStoploss();

if (OrderType() == OP_BUY){



...


なぜそうなるのでしょうか?私のコードでは、OrderTicket()がOrderType()が参照しているのと同じ注文に対応しないように、何が間違っているのか理解できません。

 
dvarrin:

Ticket番号を出力しましたが、OrderType()と一致しません。


選択された注文がOP_BUYタイプであれば、正しいifが処理されますが、その後OrderModify(...)の呼び出しで、最初のパラメータとしてOrderTicket()を渡しましたが、それは他の注文のチケット です。

次の注文なのか、前の注文なのか、どちらでしょうか?
 

orderType = OrderType()

を次のように変更します。

int orderType = OrderType();に変更し、元の宣言を削除します。

 
forexCoder:

orderType = OrderType()

を次のように変更します。

int orderType = OrderType();に変更し、元の宣言を削除します。


OrderTypeはOKです。正しいオーダーのチケットでないのはOrderTicket()の方です。
 

コーディングで回避するのではなく、問題の原因を突き止めることをお勧めします.

ソフトウェア工学は問題解決のすべてであり、それは私たちが学び、より良くなる方法です。 私は、土曜日からFibsに関連する特定の問題のコーディングに3回目の挑戦をしているところです。Print()関数を 注意深く使うことは、とても役に立ちます ... ...

 
dvarrin:

OrderTypeはOKです。それは正しい順序のチケットでないOrderTicket()である。

int OrderType = OrderType() は OK ではありません。一方が他方を隠している可能性があります (ローカル宣言はエラーなしでグローバルを隠します。) Try

int orderType = OrderType()