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

 
Artyom Trishkin:

ありがとうございます。

 
こんにちは!簡単なループについての質問ですが、よろしくお願いします。
ループの本質は、変数Iを1つインクリメントすることである。
値が印刷されます。
ループそのもの。

for (int i=0; i<100000;i++)
{
Print("I =",i);
if(i>3000)
{
Print("I =",i);
が壊れる。
}

問題は、if(i>3000)という条件の数字が、おおよそ100より大きい場合(私の場合は3000)です。
の場合、プリントは異なる値を出力します。常に。
私が言いたいのは、もしループが次のようなものであれば
for (int i=0; i<100000;i++)
{
Print("I =",i);
if(i>100)
{
Print("I =",i);
が壊れる。
}

テスターで印刷すると、I = 0、次に1、2、3、4、...と100まで表示されます。
しかし!例えば if(i>3000) のような条件であれば、Print は以下のような値を表示します。どう表現したらいいのかわからないくらい...。
を1つの数字、例えば2895から1つ足したものです!

以下はその一例です。

if i > 100

100


i >3000 の場合

3000



何が問題なのか?一日中悩んでてわからない((( Please HELP!







 
eflaer:
何が問題なのか?一日中悩んでてわからない((( Please Help!

ログファイルを開くと、完全なレポートがあります。

 
Taras Slobodyanik:

ログファイルを開くと、完全なレポートがあります。

ありがとうございます。ログファイルを開くと、確かにすべてのカウントダウンがゼロから始まっています......なぜ、ログにすべてが書かれていないのでしょうか?

どうすれば全てのタイミングをログに表示させることができるのか、アルゴリズムのバグを探しているのですが。

 
7GB以上のtxtログファイルをいちいち開くのは不便ですからね......。
 
eflaer:

ありがとうございます。ログファイルを開くと、確かにすべてのカウントダウンがゼロから始まっています......なぜ、すべてがログに書かれていないのでしょうか?

どうしたらログに全部表示されるのでしょうか?タイムライン全体が必要です。アルゴリズムのバグを探しているのです。

ログの記録やグラフィカルなオブジェクトの操作には多くのリソース(時間)がかかるため、MTはそのために最適化されており、ログの一部を「飲み込み」つつ、スクリプト本体自体は素早く実行することができる

Print()の後にSleep(120)を追加。


eflaer:
7GB以上あるログファイル、txtを毎回開くのは不便だなぁ.........。

ログファイルを定期的に削除する、日付ごとに記録されている、今日は実験を書き込んだだけなのに、なぜこんな大きなファイルが必要なのか?

 
本当にありがとうございました。本当に助かりましたエラーを探し続ける・・・。
 
Vitali Vakulin:
こんにちは。ドローダウンを10%にして、例えばドローダウンをした場合、Expert Advisorは新しい注文を開かず、開いている注文をTPに追いついて終わり、平均化したものだけが 開くようにしたいのです。これは、私の取引が複数のペアで実行されている場合、大きなドローダウンに陥るのを防ぐのに役立ちます。機能の働きは理解できたので、それを実装できればと思います。

みんな、助けてくれ。

 

こんばんは。

EAを書く ことに初めて挑戦。Expert Advisorが買いしか開かない理由を教えてください。どこにエラーがあるのか?

extern double volume     = 0.05;   // Volume
extern int    stopLoss   = 1;      // StopLoss
extern int    takeProfit = 3;      // TakeProfit
extern int    slippage  = 10;          // Slippage
extern int    Period_bars  = 100;    // Period
extern int    magic      = 321;    // Magic
extern int    ATR_Period = 50;      // ATR Period

datetime newCandle;
double ABS_High=0;
double ABS_Low=1000000;

int OnInit()
  {
//---

//---
   return(INIT_SUCCEEDED);
  }

//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+

void OnDeinit(const int reason)
  {
//---
 

  }

//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+

void OnTick()
  {

        double TD_Close=Close[1];

        double ATR=iATR(Symbol(),Period(),ATR_Period,0);

        double bsl=NormalizeDouble(Ask-(stopLoss*ATR),_Digits);

        double btp=NormalizeDouble(Ask+(takeProfit*ATR),_Digits); 

        double ssl=NormalizeDouble(Bid+(stopLoss*ATR),_Digits);

        double stp=NormalizeDouble(Bid-(takeProfit*ATR),_Digits); 

        for (int i=2; i<=Period_bars; i++)
        {
                if (Period_bars<=Bars-1)
                {
                        if (ABS_High<High[i]) ABS_High=High[i];
                        if (ABS_Low>Low[i]) ABS_Low=Low[i];
                }

                break;
        }

        if (TD_Close>ABS_High)
        {
                if (OrdersTotal () < 1 && newCandle != Time[0]) int tiket=OrderSend(Symbol(),OP_BUY,volume,Ask,slippage,bsl,btp,"Система пробоя открыла ордер BUY ",magic,0);

                else newCandle = Time[0];
        }
        else
        if (TD_Close<ABS_Low)
        {
                if (OrdersTotal () < 1 && newCandle != Time[0]) int tiket=OrderSend(Symbol(),OP_SELL,volume,Bid,slippage,ssl,stp,"Система пробоя открыла ордер SELL ",magic,0);
                else newCandle = Time[0];
        }
}

 
Andrey.Sabitov:

こんばんは。

EAを書く ことに初めて挑戦。Expert Advisorが買いしか開かない理由を教えてください。どこにエラーがあるのか?



もっと慎重にコードを挿入してください :-)

ABS_Highがどこで変化しているのかがわからない。常に0であり、TD_Close>ABS_Highの条件は常に正しいようだ