アスク! - ページ 29

 
Yannis:
デイブ

以下のコードに変更してみて、うまくいったかどうか教えてください。

Yannis

int i=0;

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

OrderSelect(i, SELECT_BY_POS, MODE_TRADES);

if (OrderType()>=OP_SELL && OrderSymbol()==Symbol() &&( OrderMagicNumber () == MagicNumber || MagicNumber==0))

{

OrderModify(OrderTicket(),OrderOpenPrice(),Ask+(15 *Point),Bid-(20*Point),Cyan); //ストップロスとテイクプロフィットを変更する。

return(0);

}

if (OrderType()>=OP_BUY && OrderSymbol()==Symbol() &&( OrderMagicNumber () == MagicNumber || MagicNumber==0))

{

OrderModify(OrderTicket(),OrderOpenPrice(),Bid-(15*Point),Ask+(20*Point),Cyan); //ストップロスとテイクプロフィットを変更する。

return(0);

}

return(0);

}

}

バックテスターのトレードをいつも何度も修正してしまうので困っています。どうすれば一度だけトレードを修正するようになりますか?プログラムはスリープしてしまうので、修正する必要があるのはまだ開いている取引だけです。

バックテストの結果を添付した.Gifをご覧ください。もう少しでうまくいきそうなのですが、アドバイスをお願いします。私はこのTake Profitと Stop Lossの変更をスリープモードと組み合わせて使用しています。以下のコードをご覧ください。

int start()

{

if (UseHourTrade)

{

int a=0;

int b=0;

int c=0;

if(!(Hour()>=FromHourTrade1 && Hour()<=ToHourTrade1)) a=1;

if(!(Hour()>=FromHourTrade2 && Hour()<=ToHourTrade2))b=1.のようになります。

if(!(Hour()>=FromHourTrade3 && Hour()<=ToHourTrade3))c=1.となります。

if(a==1 && b==1 && c==1)

{

コメント(

"ⅷ"," * 太陽風専門アドバイザー *",

"\n",

"Ⅻ", " - PROGRAM IN SLEEP CYCLE - ",

"\n",

"Ⅾ","Ⅾ", "非運営時間!<");

///////////////////スリープ開始時に損切りと利益確定を行うように変更する。

int h=0;

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

OrderSelect(h, SELECT_BY_POS, MODE_TRADES);

if (OrderType()>=OP_SELL && OrderSymbol()==Symbol() && (OrderMagicNumber () == MagicNumber || MagicNumber==0))

{

OrderModify(OrderTicket(),OrderOpenPrice(),Ask+(15 *Point),Bid-(20*Point),Cyan); //ストップロスとテイクプロフィットを変更する。

return(0);

}

if (OrderType()>=OP_BUY && OrderSymbol()==Symbol() && (OrderMagicNumber () == MagicNumber || MagicNumber==0))

{

OrderModify(OrderTicket(),OrderOpenPrice(),Bid-(15*Point),Ask+(20*Point),Cyan); //ストップロスとテイクプロフィットを変更する。

return(0);

}

return(0);

}

デイブ <<<

添付のサムネイルをご覧ください

 

for (intcnt1=OrdersTotal()-1;cnt1>=0;cnt1--)

OrderSelect(cnt1, SELECT_BY_POS, MODE_TRADES);

同じ数をカウントするようにする

 

理解できません。 どうすればこのエラーを修正できますか? 多分、私は参照してください - 私はcnt1をhに変更してみましょう私は正しいですか?

デイブ

<<

 
phoenix:
あなたのOrderSelect()は、実行中のループに基づくカウントをしませんでした。

int start()

{

if (UseHourTrade)

{

int a=0;

int b=0;

int c=0;

if(!(Hour()>=FromHourTrade1 && Hour()<=ToHourTrade1)) a=1;

if(!(Hour()>=FromHourTrade2 && Hour()<=ToHourTrade2))b=1.のようになります。

if(!(Hour()>=FromHourTrade3 && Hour()<=ToHourTrade3))c=1.となります。

if(a==1 && b==1 && c==1)

{

コメント(

"ⅷ"," * 太陽風専門アドバイザー *",

"\n",

"Ⅻ", " - PROGRAM IN SLEEP CYCLE - ",

"\n",

"Ⅾ","Ⅾ", "非運営時間!<");

スリープ開始時に損切りと利益 確定を行う ///////////////////////////////////////////

//int h=0;

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

OrderSelect(h, SELECT_BY_POS, MODE_TRADES);

if (OrderType()>=OP_SELL && OrderSymbol()==Symbol() && (OrderMagicNumber () == MagicNumber || MagicNumber==0))

{

OrderModify(OrderTicket(),OrderOpenPrice(),Ask+(15 *Point),Bid-(20*Point),Cyan); //ストップロスとテイクプロフィットを変更する。

return(0);

}

if (OrderType()>=OP_BUY && OrderSymbol()==Symbol() && (OrderMagicNumber () == MagicNumber || MagicNumber==0))

{

OrderModify(OrderTicket(),OrderOpenPrice(),Bid-(15*Point),Ask+(20*Point),Cyan); //ストップロスとテイクプロフィットを変更する。

return(0);

}

return(0);

}

変更を行ったのですが、1回の変更に対して、まだ変更のループが続いています。

またアドバイスをお願いします。

デイブ

<<<

 

コードは [PHP][/PHP] コード内で投稿してください。フォーマットされたコードの 方が読みやすく、デバッグもしやすくなります。

 

インジケーター入力タブ

インジケータをチャートに貼り付けたとき、Input Tabが表示されないようにするには、どこでどのようにコーディングすればよいですか?

ありがとうございます。

ソラリス

 
iscuba11:
int start()

{

if (UseHourTrade)

{

int a=0;

int b=0;

int c=0;

if(!(Hour()>=FromHourTrade1 && Hour()<=ToHourTrade1)) a=1;

if(!(Hour()>=FromHourTrade2 && Hour()<=ToHourTrade2))b=1.のようになります。

if(!(Hour()>=FromHourTrade3 && Hour()<=ToHourTrade3))c=1.となります。

if(a==1 && b==1 && c==1)

{

コメント(

"ⅷ"," * 太陽風専門アドバイザー *",

"\n",

"Ⅻ", " - PROGRAM IN SLEEP CYCLE - ",

"\n",

"Ⅾ","Ⅾ", "非運営時間!<");

スリープ開始時に損切りと利益確定を行う ///////////////////////////////////////////

//int h=0;

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

OrderSelect(h, SELECT_BY_POS, MODE_TRADES);

if (OrderType()>=OP_SELL && OrderSymbol()==Symbol() && (OrderMagicNumber () == MagicNumber || MagicNumber==0))

{if( OrderStopLoss() > Ask + Point * 15 || OrderStopLoss() == 0 )

OrderModify(OrderTicket(),OrderOpenPrice(),Ask+(15 *Point),Bid-(20*Point),Cyan); //ストップロスとテイクプロフィットを変更する。

return(0);

}

if (OrderType()>=OP_BUY && OrderSymbol()==Symbol() && (OrderMagicNumber () == MagicNumber || MagicNumber==0))

{

if( OrderStopLoss() < Bid - Point * 15 )

OrderModify(OrderTicket(),OrderOpenPrice(),Bid-(15*Point),Ask+(20*Point),Cyan); //ストップロスとテイクプロフィットを変更する。

return(0);

}

return(0);

}

変更を行ったのですが、1回の変更に対して、まだ変更のループが続いています。

またアドバイスをお願いします。

デイブ

<<<

紫の行を追加してください ...役に立つかもしれません

 
solaris:
インジケータをチャートに貼り付けたとき、Input Tabが表示されないようにするには、どこでどのようにコーディングすればよいですか?

ありがとうございます。

ソラリス

テンプレートとして保存しておけば、新しいチャートにインジケータを呼び出すときに、パラメータを 設定する必要がありません。

 

ご指摘の通りにしました! (ご迷惑をおかけしました)

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

OrderSelect(cnt1, SELECT_BY_POS, MODE_TRADES)を実行しました。

しかし、私はまだ以前のように単一の取引で大規模なループの修正を取得しています!**。

ロジックの中でループの中にループがあるのは明らかです。

Dave

<<

最新のバックテスト 結果をご覧ください。 ロゴ.htmを削除することができません。

 
iscuba11:
ご指摘の通りやってみました! (ご迷惑をおかけしました)

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

OrderSelect(cnt1, SELECT_BY_POS, MODE_TRADES);

しかし、私はまだ以前のように単一の取引で大規模なループの修正を取得しています!**。

明らかにループの中にループがあるロジックになっていますね

Dave

<<
最新のバックテスト結果をご覧ください。 ロゴ.htmを失礼します - 取り除けません。

上の紫を追加してみましたか?

theif( OrderStopLoss() > Ask + Point * 15 || OrderStopLoss() == 0 ) )

そしてif( OrderStopLoss() < Bid - Point * 15 )