[アーカイブ!】どんなルーキーの質問でも、フォーラムを散らかさないように。プロフェッショナルの皆さん、通り過ぎないでください。あなたなしではどこにも行けない - 2. - ページ 215

 

それにしても、EAの未決済注文は雪だるま式に開いていくので、どう制限すればいいのでしょうか?

 
stalkertula:

それにしても、EAの未決済注文は雪だるま式に開いていくので、どう制限すればいいのでしょうか?

1.注文設定の必要性を確認し、必要な場合は設定した。

2.既存の注文数を確認し、「はい」の場合は...

3.前のオーダーが設定されてからの経過時間(または他の遅延基準)をチェックし、Yesの場合、...

4.発注した。

一般的には次のような感じです...

ただし...これらの各項目には、注文設定パラメータの修正に必要な(DCから戻ってくるエラーを回避するための)様々なチェックが含まれています。

ヒント:
注文やポジションを建てる ことを決めるとき、自分なりの基準は何でしょうか?
今、自分に問いかけてみてください:「なぜ、私のようにEAに私の判断のためのすべての 基準を評価させないのか?
一度、EAにすべての 基準を考慮させれば、論理エラーをかなり減らせるでしょう...

まず、このプログラムブロックのすべてのロジックを紙に書き、
、コードに変換することをルールとしましょう(何も問題はありませんし、逆に役立ちます)。

 
artmedia70:

1.ワラントのインストールが必要かどうかを確認し、必要な場合はインストールする。

2.すでにある注文の数を確認し、「はい」の場合、...

3.前のオーダーが設定されてからの経過時間(または他の遅延基準)をチェックし、Yesの場合...

4.発注した。

一般的には次のような感じです。
ただし...これらの各ポイントには、注文設定パラメータを修正するために必要な様々なチェックも含まれています(DCから戻ってくるエラーを回避するため)。

あなたの応答をありがとうございましたが、アルゴリズムはロシア語で書かれていますが、mqlで、私は強くない、少なくとも数(設定での処方数)を固定した関数のヒントが売り/買い、次に信号が売り停止/買い停止を配置することを禁止するオープン。

//----------------------------------------------------------------------- проверка установленных стоп ордеров

double StopOrderUp,StopOrderDn,price,MinBuyOrder=1000000000,MaxSellOrder,OldBuyOrder,OldSellOrder,OldBuyLot,OldSellLot;

int TicketUp,TicketDn;

TimeOllOpenBuy=0;TimeOllOpenSell=0;

double OOL_BUYSTOP,OOL_SELSTOP;

for (i=0; i<OrdersTotal(); i++)

{

if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true)

{ price = OrderOpenPrice();

if (Magic==OrderMagicNumber() && OrderSymbol()==Symbol())

{

if (OrderType()==OP_BUYSTOP ) {StopOrderUp = price; TicketUp=OrderTicket(); OOL_BUYSTOP=OrderLots();}

if (OrderType()==OP_SELLSTOP) {StopOrderDn = price; TicketDn=OrderTicket(); OOL_SELSTOP=OrderLots();}

if (OrderType()==OP_BUY )

{ TimeOllOpenBuy = TimeOllOpenBuy + TimeCurrent()-OrderOpenTime();

if (MinBuyOrder > price) MinBuyOrder = price;

OldBuyOrder=price;

OldBuyLot=OrderLots();

if (DrawInfo&&!IsTesting()){

NameLine="ордер Bay "+OrderTicket();ObjectDelete(NameLine);ObjectDelete(NameLine+" з");

ObjectCreate(NameLine, OBJ_TREND, 0, OrderOpenTime(),price,Time[0],Bid);

ObjectSet(NameLine, OBJPROP_COLOR,LightSkyBlue);

ObjectCreate(NameLine+" з",OBJ_ARROW,0,Time[0],Bid,0,0,0,0);

ObjectSet(NameLine, OBJPROP_STYLE, STYLE_DOT);// Стиль

ObjectSet(NameLine, OBJPROP_RAY, false); // Луч

ObjectSet(NameLine+" з",OBJPROP_ARROWCODE,3);ObjectSet(NameLine+" з",OBJPROP_COLOR,WhiteColor);}

}

if (OrderType()==OP_SELL)

{ TimeOllOpenSell = TimeOllOpenSell + TimeCurrent()-OrderOpenTime();

if (MaxSellOrder < price) MaxSellOrder = price;

OldSellOrder=price;

OldSellLot=OrderLots();

if (DrawInfo&&!IsTesting()){

NameLine="ордер Sell "+OrderTicket();ObjectDelete(NameLine);ObjectDelete(NameLine+" з");

ObjectCreate(NameLine, OBJ_TREND, 0, OrderOpenTime(),price,Time[0],Ask);

ObjectSet(NameLine, OBJPROP_COLOR,Pink);

ObjectCreate(NameLine+" з",OBJ_ARROW,0,Time[0],Ask,0,0,0,0);

ObjectSet(NameLine, OBJPROP_STYLE, STYLE_DOT);// Стиль

ObjectSet(NameLine, OBJPROP_RAY, false); // Луч

ObjectSet(NameLine+" з",OBJPROP_ARROWCODE,3);ObjectSet(NameLine+" з",OBJPROP_COLOR,WhiteColor);}

}

}

}

}

if (MinBuyOrder==1000000000 && MaxSellOrder==0 && OOL_BUYSTOP!=OOL_SELSTOP)//если серия закрылась

{

DELETEORDERS();

}
 
Roman.:

新しいバーの始値でEAをテストしています(これを行うには、EAコードで新しいバーの形成のためのコントロールを指定する必要があります)。
ストップを刻むように修正することを心がけています。Romanさん、この改造のデメリットは、改造の矢が欠けること以外に何かあるのでしょうか?
 

インジケータを貼り付けると、ターミナルがハングアップし、ログに「ObjectCreate 関数の サブウィンドウ番号が不明 -1」と記録されます。

このインジケータの名前を持つウィンドウのインデックスを全てObjectCreate(x=WindowFind(short_name); ObjectCreate("fut "+i,OBJ_TREND,x,0,0,0);) にしました。

今まではいつもうまくいっていたのに・・・どうしてこうなるのか理解できません。

 
eddy:

インジケータを挿入すると、ターミナルがハングアップし、ログに同じことが書き込まれます: 15:18:16 RSI EURUSD,M15: unknown subwindow number -1 for ObjectCreate function

私はすべてのObjectCreate(WindowFind(indikator_name)、例えばObjectCreate("fut "+i,OBJ_TREND,x,0,0,0) にこのインディケータの名前を持つウィンドウのインデックスを持っています。

今までうまくいっていたのに・・・なぜだろう?

init()からObjectCreateが 呼び出されるからかもしれません。この場合、インジケータ名が正しくても、ウィンドウ検索で-1が返されることがあります。
 
というわけで...ありがとうございました。
 
理解できない。
2011.03.07 15:49:40     2011.01.19 10:50  RSI-тралинг EURUSD,H1: OrderSend error 131

これはアルパリで...フローティングスプレッドで...でも固定スプレッドは問題なく使える...。

エラーについて読んで、全巻と1ロットと0.1ロットと0.01ロットを入れてみたけど・・・同じエラー((((;゚Д゚))))))))))

 
Vovo4ka:
理解できない、と書いてある。

これはアルパリで...フローティングスプレッドで...でも固定スプレッドは問題なく使える...。

エラーについて読んだので、全巻と1ロットと0.1ロットと0.01ロットを入れてみました...同じエラーです(((

誤差のコードから、掘るべき方向を知ることができる。しかし、コードがなければ、このエラーがどこから来ているのか、誰も教えてはくれません。

 
Vovo4ka:
理解できない。

これはアルパリで...フローティングスプレッドで...でも固定スプレッドは問題なく使える...。

エラーについて読んで、全巻と1ロットと0.1ロットと0.01ロットを入れてみたけど・・・同じエラー((((;゚Д゚))))))))))


コードを書く。