どんな新人の質問でも、フォーラムを乱雑にしないように。プロフェッショナルは、通り過ぎないでください。Nowhere without you - 6. - ページ 1129 1...112211231124112511261127112811291130113111321133113411351136...1178 新しいコメント Roni Iron 2017.02.22 18:06 #11281 Vladimir: ソースコードを取って修正するという観点から、EA(またはスクリプト)が自由に使えるのであれば、可能性はあります。ボタンが押されたかどうかをチェックするすべてのアラートの周りに条件を置く必要があります。ボタンが押されていない場合は、アラートを呼び出さないでください。Vladimirさんありがとうございます。 あなたの方法を使うか、EA全体をこの状態にするか、どちらかにしようと思います。Vitalie Postolacheに 感謝します - あなたの推薦を勉強します。mql5はまだ勉強していません。 Maxim Kuznetsov 2017.02.22 18:23 #11282 miss.natasha:データをhstファイルに書き込んで、そのデータを使って自律神経グラフを作りたいのですが、どうすればいいですか?2日間格闘しているが、何も効果がない。コード#property copyright "Copyright 2016, MetaQuotes Software Corp."#property link "https://www.mql5.com"#property version "1.00"#property strictulong 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)); しかし、少なくとも同じサイズの構造体(ヘッダーとレコード)であることを確認してください。 Any rookie question, so .hst file format . Candle sticks with custom Mickey Moose 2017.02.22 20:18 #11283 こんにちは、皆さん、私たちはすでに持っているものに磨きをかけ続けています。不規則なグリッドのオーダーと、どこにでもあるような水平な 線をこれを実施する必要があります。価格が線より下にある場合、すべての注文を閉じる。困難な点は以下の通りです。 1) オーダーが非均一なタイプで、すでにラインを設定するときにすべてが行われ、マーキングを配置してラインを設定するときには行われない場合(この場合、オン/オフフラグも設定する必要があります)。2) ラインの右上にタイプ別の銘版を実装(この価格で注文が閉じられた場合、結果は残高と同じになる、つまり、我々は毎ティック、またラインを移動するときに表示を変更しなければならない。これは基本的にトレーリングストップや手動発注の場合のSLと似ているが、フローティングのみで、最初は誤ったトリガーの可能性もある)ロボットはそこにあり、数字ラベルを除けばすべてが描かれています。問題は、グリッド全体の値の正しい割り当てと情報処理です。 ファイル: USDCHFH1.png 26 kb Evgeny Belyaev 2017.02.23 14:43 #11284 trader781:1) 注文がイレギュラーなタイプの場合 今回、初めて知りました。 Nauris Zukas 2017.02.23 15:48 #11285 こんにちは。iTimeが時々間違った時刻を表示するのが理解できない。新しいローソク足を開くと、PERIOD_H1がPrint(iTime(NULL,PERIOD_M1,30))ログで時間を表示するはずです。テストではすべて正しく表示されるが、実際には数時間でも時間がずれることがある。なぜそうなのでしょうか。 Vitaly Muzichenko 2017.02.23 16:12 #11286 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]; Nauris Zukas 2017.02.23 16:33 #11287 Vitaly Muzichenko:CopyTimeを 使用してください。私もグラフィカルオブジェクトを構築する際にこの問題に気づきましたが、CopyTimeで 問題が解決しました。datetime TM[];if(CopyTime(Symbol(),Period(),0,1,TM)<0) return; TIME0=TM[0];ありがとうございました。 Mickey Moose 2017.02.23 20:50 #11288 Evgeny Belyaev: 今回初めて知りました。 オブジェクトに結びついたフローティングテイクがあればいいんです。 igrok333 2017.02.24 05:27 #11289 インジケーターの目盛りを小数点以下5桁まで表示させるには? ここでは、チャートが5桁、インジケーターが4桁となっています。 Artyom Trishkin 2017.02.24 05:36 #11290 igrok333: インジケーターの目盛りを小数点以下5桁まで表示させるには? ここでは、チャートが5桁、インジケーターが4桁となっています。IndicatorSetInteger(INDICATOR_DIGITS,Digits()); 1...112211231124112511261127112811291130113111321133113411351136...1178 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
ソースコードを取って修正するという観点から、EA(またはスクリプト)が自由に使えるのであれば、可能性はあります。ボタンが押されたかどうかをチェックするすべてのアラートの周りに条件を置く必要があります。ボタンが押されていない場合は、アラートを呼び出さないでください。
Vladimirさんありがとうございます。 あなたの方法を使うか、EA全体をこの状態にするか、どちらかにしようと思います。
Vitalie Postolacheに 感謝します - あなたの推薦を勉強します。mql5はまだ勉強していません。
データをhstファイルに書き込んで、そのデータを使って自律神経グラフを作りたいのですが、どうすればいいですか?
2日間格闘しているが、何も効果がない。
コード
#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のエラーがあります。
間違ったことを書いてしまったと理解しています。情報が少なすぎて、どう正しく書けばいいのかわからない。誰が知っている - アドバイスをお願いします。
多分、これはとてもとても古いプロジェクト(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と似ているが、フローティングのみで、最初は誤ったトリガーの可能性もある)
ロボットはそこにあり、数字ラベルを除けばすべてが描かれています。問題は、グリッド全体の値の正しい割り当てと情報処理です。
1) 注文がイレギュラーなタイプの場合
こんにちは。iTimeが時々間違った時間を表示するのは理解できない。新しいローソクのオープニングでPERIOD_H1はログに時間を表示する必要があります Print(iTime(NULL,PERIOD_M1,30)).テストではすべて正しく表示されるが、実際には数時間でも時間がずれることがある。なぜそうなのでしょうか。
CopyTimeを 使用してください。私もグラフィカルオブジェクトを構築する際にこの問題に気づきましたが、CopyTimeで 問題が解決しました。
if(CopyTime(Symbol(),Period(),0,1,TM)<0) return;
TIME0=TM[0];
CopyTimeを 使用してください。私もグラフィカルオブジェクトを構築する際にこの問題に気づきましたが、CopyTimeで 問題が解決しました。
if(CopyTime(Symbol(),Period(),0,1,TM)<0) return;
TIME0=TM[0];
今回初めて知りました。
ここでは、チャートが5桁、インジケーターが4桁となっています。
インジケーターの目盛りを小数点以下5桁まで表示させるには?
ここでは、チャートが5桁、インジケーターが4桁となっています。