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

[Deleted]  
Ekburg, ok
 
Ekburg:


ターミナルに最新のビルドをインストールしてください、その中でコードを書くのは簡単です、ミスをする可能性は低いです、アドバイスします!)

先に送られてきた、最後の括弧の部分がない、なぜかよくわからない部分を修正...。


これが私のEAからの退出です。すべての条件が満たされたら、EAから退出します。

即ち

fail=trueとする。

そして

if(fail) return(0);

削除済み  
SpikeOne:


すべての条件を満たすとEAを終了させます。

即ち

fail=trueとする。

そして

if(fail) return(0);


これは理解できるのですが、最初に送られてきたコードでは、出力関数の前に不要な括弧がたくさんついています)。

私が送ったものが役に立ったのか!?

 
if ( AccountProfit()+AccountBalance()>=740)
{
for(int zx=OrdersTotal(); zx+1>=0; zx--)
{
if(OrderSelect(zx,SELECT_BY_POS,MODE_TRADES)==true)
OrderDelete(OrderTicket())。
}
while (注文合計()>0)
{
if(OrderSelect(0,SELECT_BY_POS,MODE_TRADES))
{
if(OrderType()==OP_BUY) result=OrderClose(OrderTicket()、OrderLots()、NormalizeDouble(MarketInfo(OrderSymbol(),MODE_BID)、MarketInfo(OrderSymbol(),MODE_DIGITS),3、CLR_NONE)とします。
if(OrderType()==OP_SELL) result=OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(MarketInfo(OrderSymbol(),MODE_ASK),MarketInfo(OrderSymbol(),MODE_DIGITS)),3,CLR_NONE) となります。
if (OrderType()==OP_BUYLIMIT || OrderType()==OP_BUYSTOP || OrderType()==OP_SELLLIMIT || OrderType()==OP_SELLSTOP)
OrderDelete(OrderTicket())。
if(result!=TRUE)
{
er=GetLastError()。
Print("LastError = ",er, ",Symbol());
}
でなければ、er=0。
}
}
fail=trueとする。
}

if(fail) return(0);

EAhttps://www.mql5.com/ru/code で私のコードを挿入すると、その場所の前に

if(or_bu==risk && tick_b==0) open(0)

if(or_sl==risk && tick_s==0) open(1);

と入力すると、EAは別の取引を開始します。私のコードでは、740と入力した後に入力することになっていますが、テスターでは最初は私の残高は700です。

テストの値は、以下のように設定できます。

extern bool test=false; //テスト時にオブジェクトをOFFにする。

extern int prof=2; // 利益レベル

extern int int chag=1.7; // 命令間のステップ数

extern int risk=0; //リスクレベル

extern double lot = 0.01; // 初期ロット

extern double k_lot=2; // ボリュームインクリメント

extern double lot_max=100;

bool result;

bool fail=false。

問題は、トレードが違うので、2013年の試験で受けた日付がわからないことです。11. 08. и 2013.11 .09.

削除済み  
SpikeOne:

私のコードでは740にダイヤルした後にエントリーすることになっていますが、テスターでは当初私のバランスは700です。


if ( AccountProfit()+ AccountBalance()>=740)
   {
   for(int zx=OrdersTotal(); zx+1>=0; zx--)
      {
      if(OrderSelect(zx,SELECT_BY_POS,MODE_TRADES)==true)
      OrderDelete(OrderTicket());
      }
   while (OrdersTotal()>0)
      {
      if(OrderSelect(0,SELECT_BY_POS,MODE_TRADES))
         {
         if(OrderType()==OP_BUY) result=OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(MarketInfo(OrderSymbol(),MODE_BID),MarketInfo(OrderSymbol(),MODE_DIGITS)),3,CLR_NONE);
         if(OrderType()==OP_SELL) result=OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(MarketInfo(OrderSymbol(),MODE_ASK),MarketInfo(OrderSymbol(),MODE_DIGITS)),3,CLR_NONE);
         if (OrderType()==OP_BUYLIMIT || OrderType()==OP_BUYSTOP || OrderType()==OP_SELLLIMIT || OrderType()==OP_SELLSTOP)
         OrderDelete(OrderTicket());
         if(result!=TRUE)
            {
            er=GetLastError();
            Print("LastError = ",er, " ",Symbol());
            }
         else er=0;
         }
      else Print( "Error when order select ", GetLastError());
      }
   if(OrdersTotal()==0) fail=true;
   }
if(fail=true) return(0);

私のコードをコンパイルしてみて、その結果を教えてください。

このコードが必要以上に早く入力される場合は、最初の演算子に問題があるため、何が問題なのかを見てみましょう。

 
Ekburg:

私のコードをコンパイルしてみて、その結果を教えてください。

もし、このコードが必要以上に早く入力されるようであれば、問題はstart演算子にあるので、そこを見てみましょう。


ええ、コンパイルしましたが、問題は解決されません...。先にコードに入り込んでいる感じがする。
削除済み  
SpikeOne:

はい、コンパイルしました、でも問題が残っています。そうですね、もっと早くからコードに入っていたような気がします。

アカウントプロフィットREFERENCE関数は、当座預金の利益値を基準通貨で返します。

それは私が思うに問題です、あなたはクォードで利益を知りたいのに、それはユーロで返す、例えば

最初のコード文の計算を全てこれに置き換えてみてください。

アカウントエクィティ当座預金口座の資本金額を返します。エクイティの計算は、トレードサーバーの設定に依存します。

で、最終的にはこの演算子をコンパイルします。

if(AccountEquity()>=740)
   {
   ...
   }
 
Ekburg:

アカウントプロフィットREFERENCE関数は、当座預金の利益値を基準通貨で返します。

それは私が思うに問題です、あなたはクォードで利益を知りたいのに、それはユーロで返す、例えば

最初のコード文の計算を全てこれに置き換えてみてください。

アカウントエクィティ当座預金口座の資本金額を返します。エクイティの計算は、トレードサーバーの設定に依存します。

で、最終的にはこの演算子をコンパイルします。


問題は別にあるようで、正しく動作しないEAに、正しく動作するコードを挿入して、コンパイル後にEAが正しく動作しないのは、ブラウザでページを開いたときに、毎回キャッシュが出るような感じがします。

新規にEAを作成し、その中に動作するコードを挿入しても、なぜか動作が曲がってしまいます。

削除済み  
SpikeOne:


...正しく動作するEAに正しく動作しないコードを挿入すると、コンパイル後にEAが正しく動作しない...


私はそれを助けることができない)あなたは、すべてのEAを通過する必要があります。
 
Ekburg:

その時はどうしようもない)EAを一通り見る必要がある。


バグを発見したようです=)初期データで注文間のステップがintになっているところに1.7と入れたので、doubleに変更したらうまくいきました=)。