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

 

こんにちは!助けてください。私はMQL4で最初のEAを書いています。

Expert Advisor がポジションを開くが、クローズしない。ログには何のエラーも表示されません。

void OnTick()
  {RefreshRates();
  ma1=iMA(_Symbol,TimeFrame,Period_MA1,Shift_MA1,metod_ma1,PRICE_CLOSE,0);
ma2=iMA(_Symbol,TimeFrame,Period_MA2,Shift_MA2,metod_ma2,PRICE_CLOSE,0);


if (ma1<ma2)
{
SellPositionClose();
BuyPositionOpen();
}

if (ma1>ma2)
{
BuyPositionClose();
SellPositionOpen();
}
}
 

     
void BuyPositionOpen()  // покупка
{int res=0;
RefreshRates();
if (OrdersTotal()==0)
res=OrderSend(_Symbol,OP_BUY,Lots,Ask,3,0,0,"",Magic,0,Blue);
if (res<0) Print("OrderClose111111 error ",GetLastError());
}

void     SellPositionOpen() // продажа
{int res=0;
RefreshRates();
if (OrdersTotal()==0)
res=OrderSend(_Symbol,OP_SELL,Lots,Bid,3,0,0,"",Magic,0,Red);
if (res<0) Print("OrderClose111111 error ",GetLastError());
}

void BuyPositionClose() // закрытие длинной позиции
{RefreshRates();
if ((OrdersTotal()!=0) && (OrderMagicNumber()==Magic))
{
if (!OrderSelect(0,SELECT_BY_POS,MODE_TRADES)) Print("OrderClose error ",GetLastError());

 if(OrderType()==OP_BUY)
           
            if(!OrderClose(OrderTicket(),OrderLots(),Bid,3,White))
               Print("OrderClose error ",GetLastError());
               }
               }
               
void SellPositionClose()  // закрытие короткой позиции
{RefreshRates();
if (OrdersTotal()!=0 && OrderMagicNumber()==Magic)
{
if (!OrderSelect(0,SELECT_BY_POS,MODE_TRADES)) Print("OrderClose error ",GetLastError());
    
     if(OrderType()==OP_SELL)
                
            if(!OrderClose(OrderTicket(),OrderLots(),Ask,100,White))
               Print("OrderClose error ",GetLastError());
               
               }
               }
 
Terind:

こんにちは!助けてください。私はMQL4で最初のEAを書いています。

Expert Advisor がポジションを開くが、クローズしない。ログには何のエラーも表示されません。

この条件ではうまくいきません。

if ((OrdersTotal()!=0) && (OrderMagicNumber()==Magic)) //ордер ещё не выбран с помощью OrderSelect()
 
evillive:

これが、うまくいかない状態です。

ありがとうございます。修正しました、動作するようになりました。
 
あるペアのチャートに線や長方形を描くと、それらの要素が他のペアのマーケットに表示されてしまいます。
 
roymax:
あるペアのチャートに線や矩形を描くと、それらの要素がすべて他のペアのマーケットに表示されてしまうのです。
他の人がやり方を知らないので、私が見せなければならない。そして、できればコードに
 

これは長年のバグです、機能と考えることもできます :)

1.何かのグラフに何かを描く

2.スペースキーを押しながら、他のペアに移動する

グラフオブジェクトはチャート上に残ります

ユーロのグラフに、直線がプロットされている

ポンドに移動し、縦方向の目盛りを小さくしました

 
tara:

これは長年のバグです、機能と考えることもできます :)

1.何かのグラフに何かを描く

2.スペースキーを押しながら、他のペアに移動する

グラフオブジェクトはチャート上に残ります

ビルド765では、オブジェクトは残りますが、作成されたグラフィック上に残ります:)

追伸:Alexeyが説明した方法は確かに機能しますが、実際にはこのアクションは1つのウィンドウで行われ、チャートシンボルは変化しますが、オブジェクトはシンボルではなくウィンドウにアタッチされています)))

 
AccountInfoInteger(ACCOUNT_TRADE_ALLOWED)=false は、口座がブロックされていることを意味するのでしょうか?それとも、単なる貿易禁止?ブロックされたアカウントには、他にどのような基準があるのでしょうか?また、ログインがパスされた場合(エラー64のことです)、トレード禁止以外に、具体的にどのようなアカウントがブロックされるのでしょうか?
 
tara:

これは長年のバグです、機能と考えることもできます :)

1.何かのグラフに何かを描く

2.スペースキーを押しながら、他のペアに移動する

グラフオブジェクトはチャート上に残ります

とのことですが、これは何ら修正されていないのでしょうか?
 

こんにちは、ドキュメントを見ましたが、見つかりませんでした。






理由: