初心者の方からの質問 MQL5 MT5 MetaTrader 5 - ページ 484

 
友人たちよ、信号の設定についてもっと質問したいことがある。
問題は、Providerの注文が終了しても、Subscriberの注文が保持されたままであることです。どうやら普及率の違いからか。プロバイダー側で契約者の案件をクローズした場合、どのようにクローズさせればよいのでしょうか?どのような設定を変更すればよいのでしょうか?
 
Leo59:
Alexeyさんありがとうございます!4)))です。)

そこで...古い七面鳥を見つけ、そこから必要なものを切り出しました。書いてあげないけど))、キッカケにはなるでしょうね。そこにコメントを加えた、変数名を見れば一目瞭然です。

datetime date[]; // тут будем хранить данные времени баров, которые видны на экране
// если нужны другие данные баров, заводим соотв. массивы 

void DoWork(bool redrawAll = false)
{
    int visibleBars = 1, firstVisibleBars = 0;
    visibleBars = (int)ChartGetInteger(0, CHART_VISIBLE_BARS);
    firstVisibleBars = (int)ChartGetInteger(0,CHART_FIRST_VISIBLE_BAR);
    
    ArrayResize(date, visibleBars + 10); // выделяем память с запасом

    // так можно узнать масштаб графика, может пригодится
    int scale = (int)ChartGetInteger(0, CHART_SCALE);
    // копируем данные времен баров 
    if (CopyTime(Symbol(), Period(), startpos, visibleBars, date) == -1)
    {
        Print("Не удалось скопировать значения времени! Код ошибки = ", GetLastError());
        return;
    }

    //--- определим шаг, если надо работать с масштабом
    int step = 1;
    switch (scale)
    {
    case 0:
        step = 12;
        break;
    case 1:
        step = 6;
        break;
    case 2:
        step = 4;
        break;
    case 3:
        step = 2;
        break;
    }
    double priceMin = ChartGetDouble(0,CHART_PRICE_MIN,0);
    double priceMax = ChartGetDouble(0,CHART_PRICE_MAX,0);

    for (int i = visibleBars - 1; i >= 0; i--)
    {
        /*
        проходимся по всем видимым барам и ищем стрелки, искать можно путями:
        1. Изначально при создании стрелок надо формировать имена стрелок с привязкой ко времени, например
        string name = "UpArrow"  + IntegerToString(TimeCurrent());
        тогда тупо ищем стрелку с таким именем и далее двигаем, куда надо
        2. Заносить стрелки в структуры и класть их в хештаблицу, первый проще
        */
    }
    
}
 
Artem Prischepa:
友人たちよ、私は信号の設定についてもっと質問がある。
問題は以下の通りです。Providerの注文が終了しても、Subscriberのものには残っています。どうやら普及率の違いからか。プロバイダー側で契約者の案件をクローズした場合、どのようにクローズさせればよいのでしょうか?どのような設定を変更すればよいのでしょうか?

取引もほぼ瞬時に成立するはずです。質問です。

  1. このとき、契約者端末の電源は入っていますか?
  2. 問題発生日の端末のログファイルを添付してください。
 
Alexey Volchanskiy:

そこで...古い七面鳥を見つけ、そこから必要なものを切り出しました。書いてあげないけど))、キッカケにはなるでしょうね。そこにコメントをつけたら、変数名を見れば一目瞭然。

さらに、この行にはインジケータサブウインドウの 番号を入れた方がいいのでは?ただ、何が必要なのかが具体的にわからない

ChartGetDouble(0,CHART_PRICE_MIN,0);
 
Alexey Volchanskiy:

追記、この行にインジケータサブウインドウの番号を入れた方が良いのでは?ただ、何が必要なのかが具体的にわからない

おっと、今朝はぼんやりしていて、チャートのイベント処理を コピーしていませんでした。

void OnChartEvent(const int id,
                  const long &lparam,
                  const double &dparam,
                  const string &sparam)
{
    if(id == CHARTEVENT_CHART_CHANGE)
    {
        DoWork(true);
        ChartRedraw();
    }    
}
 
Alexey Volchanskiy:

そこで...古い七面鳥を見つけ、そこから必要なものを切り出しました。書いてあげないけど))、キッカケにはなるでしょうね。そこにコメントを追加した、変数名を見れば一目瞭然です。

アレクセイさん、ありがとうございました。

そして、どこにステップを取り付けるか、一般的にその機能は、何についてですか?

    //--- определим шаг, если надо работать с масштабом
    int step = 1;

そして、これ。

        2. Заносить стрелки в структуры и класть их в хештаблицу, первый проще

やったことがない。できれば、理解、把握、応用できるように、コード例を教えてください。

 
Alexey Volchanskiy:

おっと、今朝はぼんやりしていて、グラフのイベント処理を コピーしていませんでした。

あなたの知識と一緒に、あなたの無心さを持ちたいものです))
知っていれば簡単なことです。欲望と手段さえあれば、鍵盤を叩くだけでいいのです。
知らないで掘っていると...それはそれで面倒くさい...。さらにヒントがあれば、もうダメだ、神経が残らない。
だから、ヒントをありがとう!!!!
 
Leo59:
アレクセイさん、ありがとうございました。

ピッチのどこをねじ込むのか、その機能全般について、何について?

そして、これ。

やったことがない。できれば、理解、納得して使えるように、コード例を教えてください。

グラフを水平方向に圧縮(+/-キー)すると、スケールが変わり、時にはグラフオブジェクトが重なり合うこともあります。念のため、このコードを引用したのは、スケールの決め方です。

ハッシュを使ったコードは引用しません。持っていないので、ふと思いついただけです。バリアント1をやったほうが、シンプルでいい。

知識についてですが、勉強している皆さんにアドバイスすると、ヘルプを自由に読んで、どこに何があるのか、セクションを飛び回るだけでいいんです。つまり、詰め込まないことです。私は、ダメ元でそんな詰め込みをしていました。おおよそでいいので、「こういうものがある」と知っていれば......。少なくともセクション/サブセクションでそうすれば、疑問が生じたときに、頭の中で歯車が回り、探す方向が見えてくるはずです。原則的にヘルプは完璧ではありませんが、事例がたくさんあるので大丈夫です。

言語そのものがシンプルなので、習得は難しくありません。APIで、どこに何があるか、どのように適用するかという困難が発生する

 
こんにちは。

一見すると、3セントのような簡単な作業に見えます。が! ..............................
インジケータウィンドウに任意のオシレータのラインが表示され、"0 "を基準に異なる振幅で揺れ動く。
実際の問題点は
- 下から上へ交差する "0 "の位置で、インジケーターウィンドウの下枠に矢印を描きます。
- 0 "で上から下へ交差するように、インジケーターウィンドウの上側の境界線 付近に矢印を描きます。
- インジケーターウィンドウのオシレーターチャートのセルフスケーリングでは、矢印は自動的にインジケーターウィンドウの境界線に留まるはずです。
例えば、チャートをヒストリーに沿って前後にスクロールしたり、水平スケールを変更したりしても、矢印は常に自動的にインジケーターウィンドウの境界線に留まるはずです。

金銭的に助けてくれ」なんてヒントは 勘弁してください))。そのような機能のソース コードを添付するか、リンクを貼ってください。

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

よろしくお願いします!

各(とする)日の最大 ドローダウンを求める必要があります(ファイルへの書き込みは1日に1回発生します) - MT4ターミナル。

最大ドローダウンはピークから現在の資金ドローダウンまでのチャート上の距離で、資金ドローダウンは現在の損失額です。

次のようなコードを書きました。

   if(Analiz_Prosadki==true)
     {
      if(ContolSavaTXT==1)
        {
         ProfitNew=0;
         ProfitMin=0;
         ContolSavaTXT=0;
        }

      if(ContolSavaTXT==0)
        {
         ProfitNew=AccountInfoDouble(ACCOUNT_PROFIT);
         BalansNew==AccountInfoDouble(ACCOUNT_BALANCE);  //Текузее значение баланса
         if (BalansNew>BalansMax) BalansMax=BalansNew;
         if (ProfitNew<ProfitMin && BalansNew>=BalansMax) ProfitMin=ProfitNew;
         if (ProfitNew<ProfitMin && BalansNew<BalansMax) ProfitMin=ProfitNew-(BalansMax-BalansNew);
        }

      ContolSavaTXT=Printer.Write((string)TimeCurrent(),ProfitMin);   // Пишем информацию в файл - функция возвращает 1
     }

しかし、あるチャートでは正しく、あるチャートでは間違っている。 同時に、そのチャートは視覚的に同じである。

コードかロジックに間違いがあるのでしょうが、どのようなものか理解できません。

理由: