どんな新人の質問でも、フォーラムを乱雑にしないように。プロフェッショナルは、通り過ぎないでください。Nowhere without you - 6. - ページ 512

 
woin2110:

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価格で売り注文を出す。
 
isn-88:

Bid価格で買い注文をクローズし、Ask価格で売り注文を出す。
しゃい
削除済み  
AlexeyVik:
init関数内の簡易条件 金属、在庫、原材料はカウントしない


ありがとうございます。一番簡単な方法を教えてください。このペアでオープンポジションがあるかどうかを理解する必要があります。売り注文が あるかどうか、買い注文があるかどうか。得る必要があるということです。

0 - 未決済の注文がない場合

1-売り注文はあるが、買い注文がない。

2-買い注文はあるが、売り注文はない。

3-両方ある...

削除済み  
woin2110:

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));// オープンを定義する。


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

ありがとうございます。一番簡単な方法を教えてください。このペアでオープンポジションがあるかどうかを理解する必要があります。売り注文があるかどうか、買い注文があるかどうか。得る必要があるということです。

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)

{

//--- открыты и баи и селы

}

削除済み  
isn-88:

例えば、こんな風に。



ありがとうございました。私の理解では、ascは現在の価格 です。未決済の注文がないときに注文を出すのですが。ループは、最初のオープンオーダーから最後のオープンオーダーまで?最後のオープンオーダーのロットとその価格を変数に転送するにはどうすればよいですか?
 
Zolotai:

ありがとうございました。私の理解では、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 "にオープンプライスを代入する。

}

やってみる

削除済み  
woin2110:

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++) 最初に開いたオーダーから最後に開いたオーダーまで行くのですか? つまり、最終的には最後にオープンした注文の価格を取得する必要が ありますね。

 
Zolotai:

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設定ウィンドウを開きます。

//+------------------------------------------------------------------+
//|                                                      EaSetup.mq4 |
//+------------------------------------------------------------------+
//|                                                      EaStart.mq4 |
//|                                 Copyright © 2010, XrustSolution. |
//|                                           mail: xrustx@gmail.com |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2010, XrustSolution."
#property link      "mail: xrustx@gmail.com"
#import "user32.dll"
   int   RegisterWindowMessageA(string lpstring);
   int   PostMessageA(int  hWnd,int  Msg,int  wParam,string lParam);
#import
#define WM_COMMAND      0x0111
//+------------------------------------------------------------------+
void start(){Sleep(200);PostMessageA(WindowHandle(Symbol(),Period()), WM_COMMAND, 33048, 0);return;}
//+------------------------------------------------------------------+ 

スクリプトで1秒間隔でEAの設定画面を開き、すぐに確認(okボタンを 押す)などをさせることは可能でしょうか