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

 
Vladimir:
ソースコードを取って修正するという観点から、EA(またはスクリプト)が自由に使えるのであれば、可能性はあります。ボタンが押されたかどうかをチェックするすべてのアラートの周りに条件を置く必要があります。ボタンが押されていない場合は、アラートを呼び出さないでください。

Vladimirさんありがとうございます。 あなたの方法を使うか、EA全体をこの状態にするか、どちらかにしようと思います。

Vitalie Postolacheに 感謝します - あなたの推薦を勉強します。mql5はまだ勉強していません。

 
miss.natasha:

データをhstファイルに書き込んで、そのデータを使って自律神経グラフを作りたいのですが、どうすればいいですか?

2日間格闘しているが、何も効果がない。

コード

#property copyright "Copyright 2016, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
#property strict
ulong    last_fpos=0;         //
int      HandleHistory=-1;
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
   string symbol=Symbol();
   int per=Period()*9;

   ResetLastError();
   if(CreateHeader()==true)//если создали заголовок
     {
      HandleHistory=FileOpenHistory(symbol+(string)per+".hst",FILE_BIN|FILE_WRITE|FILE_SHARE_WRITE|FILE_SHARE_READ|FILE_ANSI);
      if(HandleHistory!=INVALID_HANDLE)
        {

         for(int i=199;i>0;i--)//заполняем данными
           {
            MqlRates r;
            r.time=Time[i];//просто пытаюсь записать, это так для примера
            r.open=Open[i];//просто пытаюсь записать, это так для примера
            r.low=Low[i];
            r.high=High[i];
            r.close=Close[i];
            r.tick_volume=(long)10;
            r.spread=0;
            r.real_volume=(long)10;
            uint byteswritten=FileWriteStruct(HandleHistory,r);
            Print("FileOpen OK ",byteswritten," ",Time[i]);
           }
       FileClose(HandleHistory);
       // FileFlush(HandleHistory);
        }
      else Print("Операция FileOpen неудачна, ошибка ",GetLastError());
     }
// long id=ChartOpen(symbol,per);
//Alert(id);
  }
//+------------------------------------------------------------------+
bool CreateHeader()//создаем файл с историей hst(заголовок)
  {

   int      file_version=401;
   string   c_copyright;
   string   c_symbol=Symbol();
   int i_period=Period()*9;
   int      i_digits=Digits;
   int      i_unused[13];
//---  
   ResetLastError();
   HandleHistory=FileOpenHistory(c_symbol+(string)i_period+".hst",FILE_BIN|FILE_WRITE|FILE_SHARE_WRITE|FILE_SHARE_READ|FILE_ANSI);
   if(HandleHistory<0)
     {
      Print("Error open ",c_symbol+(string)i_period,".hst file ",GetLastError());
      return(false);
     }
   c_copyright="(C)opyright 2003, MetaQuotes Software Corp.";
   ArrayInitialize(i_unused,0);
//--- write history file header
   FileWriteInteger(HandleHistory,file_version,LONG_VALUE);
   FileWriteString(HandleHistory,c_copyright,64);
   FileWriteString(HandleHistory,c_symbol,12);
   FileWriteInteger(HandleHistory,i_period,LONG_VALUE);
   FileWriteInteger(HandleHistory,i_digits,LONG_VALUE);
   FileWriteInteger(HandleHistory,0,LONG_VALUE);
   FileWriteInteger(HandleHistory,0,LONG_VALUE);
   FileWriteArray(HandleHistory,i_unused,0,13);
   return(true);
  }

実行の結果、履歴を含むファイルが作成されますが、自律グラフは作成されません。

以下は、グラフの情報です。

なぜか2003年のデータになって いる!?

その結果、チャートを起動するとエラーが発生しますHistoryBase: 'NZDCHF45'に196のエラーがあります。

間違ったことを書いてしまったと理解しています。情報が少なすぎて、どう正しく書けばいいのかわからない。誰が知っている - アドバイスをお願いします。


MQは.hstファイル構造を公式にオープンした覚えはない(オープンしていれば公式仕様書を確認)

多分、これはとてもとても古いプロジェクト(C, gcc)からの抜粋だと思います。


/* .hst file header
*/
struct HstHeader {
    uint32_t    version;        // +0 4 LE  : database version
    char        copyright[64];  // +4 64    : copyright data
    char        symbol[12];     // +68 12   : symbol (EURUSD..)
    uint32_t    period;         // +80 4 LE : timeframe (sec. in period)
    uint32_t    digits;         // +84 4 LE : decimals after .
    datetime    timesign;       // +88 4 LE : creation time sign.
    datetime    last_sync;      // +92 4 LE : last sync. timestamp
    uint8_t     unused[52];     // +96 52   : reserved for feauture use
                                // total 148 bytes, packed, aligned by 1
};

/* .hst bar array (file payload)
*/
// when HstHeader.version==400
struct HstRates400 {
    datetime    ctm;            // +0 4 LE  : start (creation) time
    double      open;           // +4 8 LE  : open price
    double      low;            // +12 8 LE : lowest price
    double      high;           // +20 8 LE : highst price
    double      close;          // +28 8 LE : close price
    double      volume;         // +36 8 LE : volume (nr of ticks)
                                // total 44 bytes,packed, aligned by 1
} __attribute__((packed));

// when HstHeader.version==401

struct HstRates401 {
    datetime    ctm;            // +0 8 LE  : bar start time (with ms?)
    double      open;           // +8 8 LE  : open price
    double      low;            // +16 8 LE : lowest price
    double      high;           // +24 8 LE : highst price
    double      close;          // +32 8 LE : close price
    uint64_t    volume;         // +40 8 LE : volume (nr of ticks)
    uint32_t    spread;         // +48 4 LE : spread
    long        real_volume;    // +52 8 LE : real volume
                                // total 60 bytes,packed,aligned by 1
} __attribute__((packed));


しかし、少なくとも同じサイズの構造体(ヘッダーとレコード)であることを確認してください。
 

こんにちは、皆さん、私たちはすでに持っているものに磨きをかけ続けています。

不規則なグリッドのオーダーと、どこにでもあるような水平な 線を

これを実施する必要があります。

価格が線より下にある場合、すべての注文を閉じる。

困難な点は以下の通りです。

1) オーダーが非均一なタイプで、すでにラインを設定するときにすべてが行われ、マーキングを配置してラインを設定するときには行われない場合(この場合、オン/オフフラグも設定する必要があります)。

2) ラインの右上にタイプ別の銘版を実装(この価格で注文が閉じられた場合、結果は残高と同じになる、つまり、我々は毎ティック、またラインを移動するときに表示を変更しなければならない。これは基本的にトレーリングストップや手動発注の場合のSLと似ているが、フローティングのみで、最初は誤ったトリガーの可能性もある)

ロボットはそこにあり、数字ラベルを除けばすべてが描かれています。問題は、グリッド全体の値の正しい割り当てと情報処理です。

ファイル:
USDCHFH1.png  26 kb
 
trader781:


1) 注文がイレギュラーなタイプの場合

今回、初めて知りました。
 
こんにちは。iTimeが時々間違った時刻を表示するのが理解できない。新しいローソク足を開くと、PERIOD_H1がPrint(iTime(NULL,PERIOD_M1,30))ログで時間を表示するはずです。テストではすべて正しく表示されるが、実際には数時間でも時間がずれることがある。なぜそうなのでしょうか。
 
Nauris Zukas:
こんにちは。iTimeが時々間違った時間を表示するのは理解できない。新しいローソクのオープニングでPERIOD_H1はログに時間を表示する必要があります Print(iTime(NULL,PERIOD_M1,30)).テストではすべて正しく表示されるが、実際には数時間でも時間がずれることがある。なぜそうなのでしょうか。

CopyTimeを 使用してください。私もグラフィカルオブジェクトを構築する際にこの問題に気づきましたが、CopyTimeで 問題が解決しました。

datetime TM[];
if(CopyTime(Symbol(),Period(),0,1,TM)<0) return;
TIME0=TM[0];
 
Vitaly Muzichenko:

CopyTimeを 使用してください。私もグラフィカルオブジェクトを構築する際にこの問題に気づきましたが、CopyTimeで 問題が解決しました。

datetime TM[];
if(CopyTime(Symbol(),Period(),0,1,TM)<0) return;
TIME0=TM[0];
ありがとうございました。
 
Evgeny Belyaev:
今回初めて知りました。
オブジェクトに結びついたフローティングテイクがあればいいんです。
 
インジケーターの目盛りを小数点以下5桁まで表示させるには?

ここでは、チャートが5桁、インジケーターが4桁となっています。
 
igrok333:
インジケーターの目盛りを小数点以下5桁まで表示させるには?

ここでは、チャートが5桁、インジケーターが4桁となっています。
IndicatorSetInteger(INDICATOR_DIGITS,Digits());