[警告は閉鎖されました!】フォーラムを乱雑にしないために、どんな初心者の質問でも。プロフェッショナルは、通り過ぎないでください。あなたなしでは、どこにも行けない。 - ページ 386

 
splxgf писал(а)>>

最近のハードウェアでは無限ループに非常に時間がかかるので、おそらくこのようなものでしょう。

:)

 
Rita >>:

Добрый день.

В индикатоте есть ф-я IndicatorShortName("iC_C_mod, ..... ");

Мне, однако, нужно, кроме этой надписи, - чтобя я могла вставить коммент с динамично изменяющейся переменной в окно индикатора.

Типа ф-и Comment();

Но только, именно, в окно индикатора, а вовсе не на сам график.

Пож. подскажите ?


#property copyright "Copyright © 2009, :-)"
#property link      "----"

#property indicator_separate_window

int start()
{
   string info = "Bid= "+DoubleToStr(Bid,5);
   IndicatorShortName( info);
//----
   return(0);
}

を指定すると、指定したウィンドウに出力されます。

 
Rita >>:

Добрый день.

В индикатоте есть ф-я IndicatorShortName("iC_C_mod, ..... ");

Мне, однако, нужно, кроме этой надписи, - чтобя я могла вставить коммент с динамично изменяющейся переменной в окно индикатора.

Типа ф-и Comment();

Но только, именно, в окно индикатора, а вовсе не на сам график.

Пож. подскажите ?


ラベルを作成し、テキストを変更することができます


   string ID  = "MyLabelName";


   if(ObjectCreate( ID, OBJ_LABEL, 0, 20, 20))
     {
       ObjectSet( ID, OBJPROP_XDISTANCE, 35);
       ObjectSet( ID, OBJPROP_YDISTANCE, 35);
     }
 
   //отображение на экране значения переменной txt 
   string txt = "Belissimo";
   ObjectSetText( ID, txt , 18, "Arial Black", Green);
コードは間違っているかもしれませんが、動作します。
 
放置しない
 
xeon さん、splxgf さん、ありがとうございました !
 
友人たちよ、こんにちは。

次の質問について、あなたの話を聞くのは興味深いことです。

通貨ペアの相場は、他の多くの金融商品の影響を受けるという意見があります。
主要な株価指数の動き、先物、オプションなどです。


1)この影響を追跡することは可能だと思いますか?
(そのため、取引戦略に建設的に利用する)?

2) 該当する通貨ペアと他の金融商品の相場の間に持続的な相関関係があることに気づきましたか?

3) そのような相関を示す指標を使ったことがありますか?


(このフォーラムの同名のテーマ別ブランチでコメントをお待ちしています。https://forum.mql4.com/ru/28930 )

 

splxgf писал

void CheckSell()
{
if((NormalizeDouble(Price,Digits) < NormalizeDouble(MA10,Digits)))
Sell();
}

最近のハードウェアでは無限ループに非常に時間がかかるので、おそらくこのようなものでしょう。


しかし、そうするとプログラムは条件を確認するだけで、それが満たされていれば販売することになるのです。そうでなかったら、どうするんだ?まさにこのコードの断片で条件が満たされるのを待つことになっているのです。



Vinin さんが 書き込みました


なぜ、ループを作ったのですか?何も条件がない場合は、プログラムが終了するだけで、信号の出現を待つ必要はありません。

ループを作ったのは、このコードの断片の中で、プログラムが条件の出現を待つべき場所だからです。ループの先頭に抜けることはできません。条件待ちの正しい実装方法は?


そして、これが私のデザインです。

void CheckSell()
{
while(!(NormalizeDouble(Price,Digits) < NormalizeDouble(MA10,Digits)))
{
Sleep(5);
RefreshRates();
}
Sell();
}


- 動作しているのにテスターがハングアップするだけ?それとも、まったく機能しないのでしょうか?与えられた関数を終了させることなく、条件が満たされるのを適切に待つ方法を理解したいと思います。


回答ありがとうございました

 
Jahspear >>:


Но ведь тогда программа просто проверит условие и если оно выполняется, продаст. А если не выполняется, что она будет делать? По задумке, должна ждать выполнения условия именно в этом месте кода.


Вот поэтому и сделал цикл, что именно в этом месте кода программа должна ждать выполнения условия. Выйти в начало нельзя. Как правильно реализовать цикл ожидания условия?


- она рабочая и просто тестер вешает? Или не работает в принципе? Очень хочется понять, как правильно ожидать выполнения условия, не выходя из заданной функции.

プログラムが動作する可能性が最も高く、関数を終了せずに条件を待つのは間違いであり、少なくともテスターは手順が実行されるまで新しいティックを与えません。

条件が満たされない場合は、プログラムを終了し、テスターに制御を委ねる必要があります。かつてのプログラムは直線的であったため、自分自身をループさせ、上からのシグナルを待っていた。このプログラムはイベントドリブンで、イベントが発生したとき、例えば、新しいティックとこのイベントのハンドラは、新しいティックの処理に必要なすべての作業が終了した後、関数は、ディスパッチャではなく、終了する必要がありますstart()を呼び出すことです。

start()で条件を確認し、条件が来ていれば用を足し、来ていなければ用を足して次のtickを待つのが正しい。すでにロジックを調整しています。

 

という疑問もあります。

2つの通貨ペアのMAラインを別ウィンドウに表示するインジケーターです。問題なく動作しています。

しかし、コードに条件を挿入すると

"シンボルの一つでバーが外れたら、二つ目のシンボルで-この現在のバーをスキップする(考慮しない)"、こんな感じです。

int start()
  {
     int limit;
     int counted_bars=IndicatorCounted();
  //---- проверка на возможные ошибки
     if( counted_bars<0) return(-1);
  //---- последний посчитанный бар будет пересчитан
     if( counted_bars>0) counted_bars-=10;
     limit=Bars- counted_bars;
  //---- основной цикл
ВОТ Я СТАВЛЮ ЭТО УСЛОВИЕ  :
    for( k = 0; k < iBars( Symbol_1,Period()); k++)   {  
    int symb2Shift = iBarShift( Symbol_2,Period(),iTime( Symbol_1,Period(), k),true);
    if( symb2Shift != -1)                            { 
//---------------------------------
    for( k=0; k< limit; k++)
       {
       Symbol1[ k]=     (iMA( Symbol_1,..... k)  ;
       Symbol2[ k]=     (iMA( Symbol_2,..... k)  ;           
       } 
                        }
                       }
//----
    return(0);
  }

その後、mt4は1分半から2分ほどハングアップします。すると、インジケーターが動き出すのですが、RAMを35〜45%も使ってしまうのです。

何が原因なのでしょうか、アドバイスをお願いします。

 

こんにちは。

ある特定のバー(オプションで設定する必要があります)を強調する簡単なインジケータを書く方法を教えてください、例えば12.30で垂直線と チャート上の曜日(各日の干草の上のどこかに言う)記号で。

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