MQL4、MQL5に関する初心者からの質問、アルゴリズムやコードに関するヘルプ、ディスカッションなど。 - ページ 463

 
HUNTERGOOD:

リクエストは、私が457ページ、投稿番号4567で作成したもので、必要なものはすべて含まれています。"インジケータ、何が必要であり、どのように正確に" - そこに、それはすべてを記述することは困難ではない、すべての短い、ポイントに、はっきりと設定し、何が私の最初の投稿で間違っていた、その私のような小さな要求、コードで理解する人のために、6ページを無視して、最後に "ライト "で私を "バンター" - 私はここにスタブ書き込むことができます。を重複して要求しています。

(((^^;) 皆さん、こんにちは。プログラマーの皆様、Alert3.Lv1;2;3ごとにサウンドファイルを指定できる文字列を挿入して、指定した別のサウンドを鳴らすことができるようにしたいので、ご協力お願いします。私自身、コーディングやプログラミングは苦手です^^))

チャートで試したが、うまくいくか?

 

注文が入った直後にストップとテイクを置きたいのですが、どうすればいいでしょうか?EAが注文を出した場合、ストップとテイクを設定したいのですが。オペレーターが注文を出した 場合、ストップとテイクを 設定したい のですが。もっと具体的にどう表現すればいいのでしょうか。だから、Expert Advisorとオペレーターは、これらの注文がどこにあるかを理解しているのです。

このコードは動作するようですが、正しいのでしょうか?

それとも、FORを使って注文の種類(Expert AdvisorやOperator)ごとにアクションを手配する必要があるのでしょうか?

ファイル:
STOP_TAKE.txt  4 kb
 

どうすればいいのか1

2

 
Rewerpool:

どうすればいいのか

通常、ここにコードを挿入 します。ここにいるほとんどの人は、写真を分解するのが面倒なんです。

 
Konstantin Nikitin:

ここにコードを貼り付けても OKです。ここにいるほとんどの人は、写真を分解するのが面倒なんです。

最初に全コードを添付したはずなのに!?ファイルだけ!?メッセージ.そして、もっと簡単に状況を写真で説明しました

 

注文種別(Expert AdvisorやOperator)ごとにFORを使った検索をアレンジする必要があるのでしょうか?



//+------------------------------------------------------------------+

//| ストップ&テイクオーバーのオープンオーダー設定機能
//+------------------------------------------------------------------+
void STOP_TAKE()
{
int tip,Ticket。
double OOP,OSL,OTP;
int SPREAD = (int)MarketInfo(Symbol(),MODE_SPREAD);
if (stoploss<STOPLEVEL)stoploss=0。
if (takeprofit<STOPLEVEL) takeprofit=0;
for(int i=0; i<OrdersTotal(); i++)
{
if(OrderSelect(i,SELECT_BY_POS)==true)
{
tip=OrderType()。
//----------IfOrderTotal()
if(tip<2 && OrderSymbol()==Symbol() && OrderMagicNumber()==Magic))
{
OSL = OrderStopLoss()です。
OTP = OrderTakeProfit()です。
if ((OSL=0&stoploss!=0)||(OTP=0&&takeprofit!=0))。
{
OOP = OrderOpenPrice()。
Ticket = OrderTicket();
if (tip==OP_BUY || tip==OP_BUYSTOP || tip==OP_BUYLIMIT)
{
if (takeprofit!=0) TP = NormalizeDouble(OOP + takeprofit*Point,Digits); else TP=OTP;
if (stoploss!=0) SL = NormalizeDouble(OOP - (stoploss+SPREAD)* Point,Digits); else SL=OSL.If(stoploss!=0)。
if (オーダーモディファイ(チケット,OOP,SL,TP,0,ホワイト))Print("SetStop ",Ticket," SL ",OSL," -> ",SL," TP ",OTP," -> ",TP")。
else Print(Symbol()," Error STOP_TAKE",GetLastError()," Ticket ",Ticket)を実行します。
}
if (tip==OP_SELL || tip==OP_SELLSTOP || tip==OP_SELLLIMIT)
{
if (takeprofit!=0) TP = NormalizeDouble(OOP - takeprofit*Point,Digits); else TP=OTP;
if (stoploss!=0) SL = NormalizeDouble(OOP + (stoploss+SPREAD)* Point,Digits); else SL=OSL.If(stoploss!=0)。
if (オーダーモディファイ(チケット,OOP,SL,TP,0,ホワイト))Print("STOP_TAKE",Ticket," SL ",OSL," -> ",SL," TP ",OTP," -> ",TP);
else Print(Symbol()," Error STOP_TAKE",GetLastError()," Ticket ",Ticket)を実行します。
}
}
}
//---------- If(tip<2 &&Order)
else if(tip<2 && OrderSymbol()==Symbol()&& OrderMagicNumber()!=Magic)
{
OSL = OrderStopLoss()です。
OTP = OrderTakeProfit()です。
if ((OSL=0&stoploss!=0)||(OTP=0&&takeprofit!=0))。
{
OOP = OrderOpenPrice()。
Ticket = OrderTicket();
if (tip==OP_BUY || tip==OP_BUYSTOP || tip==OP_BUYLIMIT)
{
if (takeprofit!=0) TP = NormalizeDouble(OOP + takeprofit*Point,Digits); else TP=OTP;
if (stoploss!=0) SL = NormalizeDouble(OOP - (stoploss+SPREAD)* Point,Digits); else SL=OSL.If(stoploss!=0)。
if (オーダーモディファイ(チケット,OOP,SL,TP,0,ホワイト))Print("STOP_TAKE",Ticket," SL ",OSL," -> ",SL," TP ",OTP," -> ",TP);
else Print(Symbol()," Error STOP_TAKE",GetLastError()," Ticket ",Ticket)を実行します。
}
if (tip==OP_SELL || tip==OP_SELLSTOP || tip==OP_SELLLIMIT)
{
if (takeprofit!=0) TP = NormalizeDouble(OOP - takeprofit*Point,Digits); else TP=OTP;
if (stoploss!=0) SL = NormalizeDouble(OOP + (stoploss+SPREAD)* Point,Digits); else SL=OSL.If(stoploss!=0)。
if (オーダーモディファイ(チケット,OOP,SL,TP,0,ホワイト))Print("STOP_TAKE",Ticket," SL ",OSL," -> ",SL," TP ",OTP," -> ",TP);
else Print(Symbol()," Error STOP_TAKE",GetLastError()," Ticket ",Ticket)を実行します。
}
}
}
}
}
}
 
Rewerpool:

最初に全コードを添付したはずなのに!?ファイルだけ!?メッセージ.そして、もっと簡単に状況を写真で説明しました

さて、なぜここに写真を載せるのか。そのことをお伝えしています。

 
Rewerpool: 手動で発注した注文のマジックナンバーは0ですが、EAでは独自のマジックナンバーで発注します。これを目安にするとよいでしょう。
 

Konstantin Nikitin OK!Expert Advisorまたはオペレーターによる利食い注文のコード構成は正しいですか?そのため、質問をわかりやすくするために、写真を添付しました

 
Rewerpool:

Konstantin Nikitin OK!Expert Advisorまたはオペレーターによる利食い注文のコード構成は正しいですか?そのため、質問をわかりやすくするために、写真を添付しました

私なら、次のようにします。

for(int i=0; i<OrdersTotal(); i++)
{
     if(!OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) continue;
     if(OrderSymbol()!=Symbol()) continue;
     
     int tip = OrderType();
     if(tip!=OP_BUY && tip!=OP_BUYSTOP && tip!=OP_BUYLIMIT) continue;
     
     // переменные которые будут использоваться в любых ордерах
     int Ticket = OrderTicket();
     double OOP = OrderOpenPrice();
     
     //---
     switch( OrderMagicNumber() )
     {
          case Magic:    // Ордера советника
               {
                    // что-то делаем
               }
               break;

          default:       // Все остальные
               {
                    // что-то делаем
               }
     }
}