if ((hi-low)<=max_koridor_v_punktah)。 { int buy = OrderSend(Symbol(), OP_BUYSTOP, LotBuy, OpenBuy, 0, StopLossBuy, 0);//Open Buy注文を出す。
もし { アラート("BuyStopオーダーが設定されました",buy)。 } int sell= OrderSend(Symbol(), OP_SELLSTOP, LotSell, OpenSell, 0, StopLossSell, 0);//Sell 注文をオープン。 もし { アラート("SellStop order set ",sell); } if (DayOfWeek()==5 && Hour()==22) //サーバータイム金曜日23:00の保留・未決済注文を削除 { if (OrderSelect(sell,SELECT_BY_TICKET)==true) { OrderClose(sell,OrderLots(),Bid,3,Green);//(Ticket,Lot,Close price, slippage in pips,color of close arrow on the chart){ 売り注文を成行で決済します。 OrderDelete(sell);//Sell Limitをクローズします。 } if (OrderSelect(buy,SELECT_BY_TICKET)==true) { OrderClose(buy,OrderLots(),Ask,3,Red);//(Ticket,Lot,Close price,slippage in points,Color of close arrow on the chart)/買いの成行注文をクローズ。 OrderDelete(buy);//買い指値をクローズします。 return(0)です。 } } }
if ((hi-low)<=max_koridor_v_punktah)。
{
int buy = OrderSend(Symbol(), OP_BUYSTOP, LotBuy, OpenBuy, 0, StopLossBuy, 0);//Open Buy注文を出す。
もし
{
アラート("BuyStopオーダーが設定されました",buy)。
}
int sell= OrderSend(Symbol(), OP_SELLSTOP, LotSell, OpenSell, 0, StopLossSell, 0);//Sell 注文をオープン。
もし
{
アラート("SellStop order set ",sell);
}
if (DayOfWeek()==5 && Hour()==22) //サーバータイム金曜日23:00の保留・未決済注文を削除
{
if (OrderSelect(sell,SELECT_BY_TICKET)==true)
{
OrderClose(sell,OrderLots(),Bid,3,Green);//(Ticket,Lot,Close price, slippage in pips,color of close arrow on the chart){ 売り注文を成行で決済します。
OrderDelete(sell);//Sell Limitをクローズします。
}
if (OrderSelect(buy,SELECT_BY_TICKET)==true)
{
OrderClose(buy,OrderLots(),Ask,3,Red);//(Ticket,Lot,Close price,slippage in points,Color of close arrow on the chart)/買いの成行注文をクローズ。
OrderDelete(buy);//買い指値をクローズします。
return(0)です。
}
}
}
なぜ注文を閉じず、制限を削除しないのか、誰か教えてください。
Bid価格で買い注文をクローズし、Ask価格で売り注文を出す。
Bid価格で買い注文をクローズし、Ask価格で売り注文を出す。
init関数内の簡易条件 金属、在庫、原材料はカウントしない
ありがとうございます。一番簡単な方法を教えてください。このペアでオープンポジションがあるかどうかを理解する必要があります。売り注文が あるかどうか、買い注文があるかどうか。得る必要があるということです。
0 - 未決済の注文がない場合
1-売り注文はあるが、買い注文がない。
2-買い注文はあるが、売り注文はない。
3-両方ある...
https://docs.mql4.com/ru/series
if(DayOfWeek()==1,2....&& Hour()==1,2......)
{
double hi=iHigh(NULL,0,iBarShift(NULL,0,iTime(NULL,PERIOD_D1,0));//define high
double low=iLow(NULL,0,iBarShift(NULL,0,iTime(NULL,PERIOD_D1,0));//define low.NULL(NULL,0,0,0,0,0))です。
double op=iOpen(NULL,0,iBarShift(NULL,0,iTime(NULL,PERIOD_D1,0));// オープンを定義する。
ありがとうございました。
ありがとうございます。一番簡単な方法を教えてください。このペアでオープンポジションがあるかどうかを理解する必要があります。売り注文があるかどうか、買い注文があるかどうか。得る必要があるということです。
0 - 未決済の注文がない場合
1-売り注文はあるが、買い注文がない。
2-買い注文はあるが、売り注文はない。
3-両方あります。
例えばこんな感じ。
int i_buy=0;
int i_sell=0;
//--- получим количество открытых и отложенных ордеров
int total=OrdersTotal();
for(int i=0;i<total;i++)
{
//--- выберем i-й ордер из списка торговли
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true)
{
//--- если ордер открыт по текущему финансовому инструменту
if(OrderSymbol()==Symbol())
{
switch(OrderType())
{
//--- Бай ордер
case OP_BUY:
i_buy++;
break;
//--- Селл ордер
case OP_SELL:
i_sell++;
break;
case OP_BUYSTOP:
case OP_BUYLIMIT:
case OP_SELLSTOP:
case OP_SELLLIMIT:
//--- пробойники, лимитники
break;
}
}
}
}
if(i_buy==0 && i_sell==0)
{
//--- нет открытых ордеров
}
if(i_buy>0 && i_sell==0)
{
//--- открыты баи
}
if(i_buy==0 && i_sell>0)
{
//--- открыты селы
}
if(i_buy>0 && i_sell>0)
{
//--- открыты и баи и селы
}
例えば、こんな風に。
ありがとうございました。私の理解では、ascは現在の価格 です。未決済の注文がないときに注文を出すのですが。ループは、最初のオープンオーダーから最後のオープンオーダーまで?最後のオープンオーダーのロットとその価格を変数に転送するにはどうすればよいですか?
ありがとうございました。私の理解では、ascは現在の価格です。 未決済の注文がないときに注文を出すのですが。ループは、最初のオープンオーダーから最後のオープンオーダーまで?最後のオープンオーダーのロットとその価格を変数に設定するにはどうすればよいですか?
https://docs.mql4.com/ru/trading/orderselecthttps://docs.mql4.com/ru/trading/orderopenprice https://docs.mql4.com/ru/trading/orderlots
double z; //変数 "z "を宣言する。
double y; //変数 "y "の宣言
if(OrderSelect(10,SELECT_BY_POS)==true) //注文(チケット別)が既に選択されている場合
{
OrderLots()=z //変数 "z "にこの注文のロットを割り当てる
OrderOpenPrice()=y //変数 "y "にオープンプライスを代入する。
}
やってみる
https://docs.mql4.com/ru/trading/orderselecthttps://docs.mql4.com/ru/trading/orderopenprice https://docs.mql4.com/ru/trading/orderlots
double z; //変数 "z "の宣言
double y; //変数 "y "の宣言
if(OrderSelect(10,SELECT_BY_POS)==true) //注文(チケット別)が既に選択されている場合
{
OrderLots()=z //変数 "z "にこの注文のロットを割り当てる
OrderOpenPrice()=y //変数 "y "にオープンプライスを代入する。
}
やってみる
y = OrderOpenPrice();
おっと、わかったような、わからないような。最後のオープンオーダーからの距離が5ピップス以上である場合、別のオーダーを開く必要があります。でも、うまくいかないんです、質問が。
for(int i=0;i<total;i++) 最初に開いたオーダーから最後に開いたオーダーまで行くのですか? つまり、最終的には最後にオープンした注文の価格を取得する必要が ありますね。
y = OrderOpenPrice();
if((i_buy==0 && i_sell==0) || y > Step)がわからないのです。最後のオープンオーダーからの距離が5ピップス以上である場合、別のオーダーを開く必要があります。でも、うまくいかないんです、質問が。
for(int i=0;i<total;i++) 最初に開いたオーダーから最後に開いたオーダーまで行くのですか? 言い換えれば、最後に開いた注文の価格を取得する必要が あります。
出くわしていないのでわかりません。
こんにちは。https://forum.mql4.com/ru/51490/page2 に、EAの設定画面を開くスクリプトがあるという書き込みを見ました。
こちらはEA設定ウィンドウを開きます。
スクリプトで1秒間隔でEAの設定画面を開き、すぐに確認(okボタンを 押す)などをさせることは可能でしょうか?