[警告は閉鎖されました!】フォーラムを乱雑にしないために、どんな初心者の質問でも。プロフェッショナルは、通り過ぎないでください。あなたなしでは、どこにも行けない。 - ページ 61 1...545556575859606162636465666768...1145 新しいコメント Leo59 2009.04.10 10:28 #601 専門家の皆様、ご回答よろしくお願いします。 MetaEditorは、プログラム作成用テンプレートのテキストファイルを持っています。これらは、プログラムを作成する際にウィザードで使用されます。テンプレートテキストには、作成されるプログラムファイルのタイプのパラメータが指定されます。コードテキストには表示されないが、それらのパラメーターの間にタグがある。しかし、端末はなぜかそれを認識する。Expert Advisor を作成した場合、次のティック以降に Start 機能が起動します。 インジケータを作成した場合、ティックなしで Start 機能が起動します。タグやその中に入っているものはどこに行くのですか? Yug 2009.04.10 10:52 #602 その原因がどこにあるのか、さらに2つのテストを行いました。 1.iniから文字列の配列ではなく、個別の変数に読み込んでいます。結果は予想通り、つまりコピーするのは値ではなく参照です。 int numCross=0; string Cross_1="-", Cross_2="-", Cross_3="-"; //+------------------------------------------------------------------+ //| expert initialization function | //+------------------------------------------------------------------+ int init() { string sectionName = "common"; numCross = ReadIniInteger( config_path, sectionName, "numCross", 0); ArrayResize( CrossName, numCross); for (int i=0; i<numCross; i++) CrossName[i] = "-"; sectionName = "cross1"; Cross_1 = ReadIniString( config_path, sectionName, "name", "-"); Print("init.1: Cross_1=", Cross_1); sectionName = "cross2"; Cross_2 = ReadIniString( config_path, sectionName, "name", "-"); Print("init.1: Cross_2=", Cross_2); sectionName = "cross3"; Cross_3 = ReadIniString( config_path, sectionName, "name", "-"); Print("init.1: Cross_3=", Cross_3); Print("init.1: read complete"); Print("init.2: Cross_1=", Cross_1); Print("init.2: Cross_2=", Cross_2); Print("init.2: Cross_3=", Cross_3); Print("-------------------------------"); sectionName = "cross1"; Cross_1 = StringSubstr( ReadIniString( config_path, sectionName, "name", "-"), 0, 0); Print("init.3: Cross_1=", Cross_1); sectionName = "cross2"; Cross_2 = StringSubstr( ReadIniString( config_path, sectionName, "name", "-"), 0, 0); Print("init.3: Cross_2=", Cross_2); sectionName = "cross3"; Cross_3 = StringSubstr( ReadIniString( config_path, sectionName, "name", "-"), 0, 0); Print("init.3: Cross_3=", Cross_3); Print("init.3: read complete"); Print("init.4: Cross_1=", Cross_1); Print("init.4: Cross_2=", Cross_2); Print("init.4: Cross_3=", Cross_3); return(0); } を表示します。 2009.04.10 14:31:42 example AUDUSD,H4: init.4: Cross_3=USDJPY 2009.04.10 14:31:42 example AUDUSD,H4: init.4: Cross_2=GBPUSD 2009.04.10 14:31:42 example AUDUSD,H4: init.4: Cross_1=EURUSD 2009.04.10 14:31:42 example AUDUSD,H4: init.3: read complete 2009.04.10 14:31:42 example AUDUSD,H4: init.3: Cross_3=USDJPY 2009.04.10 14:31:42 example AUDUSD,H4: init.3: Cross_2=GBPUSD 2009.04.10 14:31:42 example AUDUSD,H4: init.3: Cross_1=EURUSD 2009.04.10 14:31:42 example AUDUSD,H4: ------------------------------- 2009.04.10 14:31:42 example AUDUSD,H4: init.2: Cross_3=USDJPY 2009.04.10 14:31:42 example AUDUSD,H4: init.2: Cross_2=USDJPY 2009.04.10 14:31:42 example AUDUSD,H4: init.2: Cross_1=USDJPY 2009.04.10 14:31:42 example AUDUSD,H4: init.1: read complete 2009.04.10 14:31:42 example AUDUSD,H4: init.1: Cross_3=USDJPY 2009.04.10 14:31:42 example AUDUSD,H4: init.1: Cross_2=GBPUSD 2009.04.10 14:31:42 example AUDUSD,H4: init.1: Cross_1=EURUSD 2. 文字列の配列を返したが、関数がiniの文字列値を読み取るのではなく string ReadIniString(string FileName, string SectionName, string KeyName, string Default = "") { string ReturnedString = ""; int nValue = GetPrivateProfileStringA( SectionName, KeyName, Default, ReturnedString, 255, FileName); if( nValue > 0) return( ReturnedString); else return( Default); } win apiから何も呼び出さないテスト関数を使用しました。 string CrossName[]; int numCross=0; //+------------------------------------------------------------------+ //| expert initialization function | //+------------------------------------------------------------------+ int init() { string sectionName = "common"; numCross = ReadIniInteger( config_path, sectionName, "numCross", 0); ArrayResize( CrossName, numCross); for (int i=0; i<numCross; i++) CrossName[i] = "-"; for (int i=0; i< numCross; i++) { sectionName = StringConcatenate("cross", i+1); CrossName[ i] = someFunc( i+1); Print("init.1: CrossName[", ( i+1), "]=", CrossName[ i]); } Print("init.1: read complete"); for ( i=0; i< numCross; i++) { Print("init.2: CrossName[", ( i+1), "]=", CrossName[ i]); } Print("-------------------------------"); for ( i=0; i< numCross; i++) { sectionName = StringConcatenate("cross", i+1); CrossName[ i] = StringSubstr( someFunc( i+1), 0, 0); Print("init.3: CrossName[", ( i+1), "]=", CrossName[ i]); } Print("init.3: read complete"); for ( i=0; i< numCross; i++) { Print("init.4: CrossName[", ( i+1), "]=", CrossName[ i]); } return(0); } //+------------------------------------------------------------------+ string someFunc(int val) { string ReturnedString = "CROSS_"+ val; return( ReturnedString); } //+------------------------------------------------------------------+ 出来栄え 2009.04.10 14:41:12 example AUDUSD,H4: init.4: CrossName[3]=CROSS_3 2009.04.10 14:41:12 example AUDUSD,H4: init.4: CrossName[2]=CROSS_2 2009.04.10 14:41:12 example AUDUSD,H4: init.4: CrossName[1]=CROSS_1 2009.04.10 14:41:12 example AUDUSD,H4: init.3: read complete 2009.04.10 14:41:12 example AUDUSD,H4: init.3: CrossName[3]=CROSS_3 2009.04.10 14:41:12 example AUDUSD,H4: init.3: CrossName[2]=CROSS_2 2009.04.10 14:41:12 example AUDUSD,H4: init.3: CrossName[1]=CROSS_1 2009.04.10 14:41:12 example AUDUSD,H4: ------------------------------- 2009.04.10 14:41:12 example AUDUSD,H4: init.2: CrossName[3]=CROSS_3 2009.04.10 14:41:12 example AUDUSD,H4: init.2: CrossName[2]=CROSS_2 2009.04.10 14:41:12 example AUDUSD,H4: init.2: CrossName[1]=CROSS_1 2009.04.10 14:41:12 example AUDUSD,H4: init.1: 読み込み完了 2009.04.10 14:41:12 example AUDUSD,H4: init.1: CrossName[3]=CROSS_3 2009.04.10 14:41:12 example AUDUSD,H4: init.1: CrossName[2]=CROSS_2 2009.04.10 14:41:12 example AUDUSD,H4: init.1: CrossName[1]=CROSS_1 の変換に問題があるようであることがわかりました。 LPTSTR lpReturnedString [out] 取得した文字列を受け取るバッファへのポインタ GetPrivateProfileString fi tomql4 string の win api . Everlost 2009.04.10 11:17 #603 xruss >> : 論理的には、シグナルが発生する前にORD型を定義しておくべきだと思ったのですが、そうしないと、取引基準にどのように考慮されるのでしょうか。 プライベートで回答する - この方法がより生産的だと思います。 Дмитрий 2009.04.11 06:57 #604 Reshetov >> : 車輪を再発明するのではなく、既製のExpert Advisorの一つを使用して、マーチンゲールで取引し、それがすでに実装されている方法を確認することは、はるかに簡単です。 例えば、Universum3.0。 ありがとうございます。すべてが大昔に発明されたものだということに、まったく同感です。 Дмитрий 2009.04.11 06:57 #605 xrust >> : 'フォーラムを散らかさないように、どんな新人の質問でも。プロに負けるな。あなたがいないとどこにも行けない』。 ありがとうございました。 Eugene 2009.04.12 20:47 #606 テスターでEAをテスト する際、init()関数が実行される。 EAのinit()関数で、外部変数を正規化したい。を作成し、これらの正規化された値を使用して、start() からインジケータを呼び出します。 この正規化をstart()に入れたくないのです。 ストラテジーテスターでEAの最適化を行う際、外部変数が変更されるたびにinit()関数が実行されるのでしょうか? Alexander 2009.04.12 21:18 #607 begemot61 писал(а)>> テスターでEAをテストする際、init()関数が実行される。 EAのinit()関数で、外部変数を正規化したい。 を作成し、start()からインジケータを呼び出す際に、これらの正規化された(新しい)値を使用します。 この正規化をstart()に入れたくないのです。 ストラテジーテスターでEAの最適化を行う際、外部変数が変更されるたびにinit()関数が実行されるのでしょうか? はい、そうなります。 Дмитрий 2009.04.13 04:55 #608 int start() { if (OrdersTotal() == 0 && TimeDayOfWeek(TimeCurrent()) == 5 && TimeHour(TimeCurrent()) == 12 && TimeMinute(TimeCurrent()) == 30 && TimeSeconds(TimeCurrent()) >= 00) { Alert("Тра ляля"); OrderSend(Symbol(),OP_SELL,Lots,Bid,3,0,0,"sell",999999,0,Red); } なぜここで注文が開けないのか、どなたか教えてください。私は何を間違えているのだろう? Alexander 2009.04.13 05:04 #609 Dimoncheg писал(а)>> なぜここで注文が開かないのか、誰か心当たりはありませんか?私は何を間違えているのだろう? じゃあ、こっちは...金曜日まで待つんだ、その1分間にティックがあれば開くはずだ。 Дмитрий 2009.04.13 06:53 #610 Roger >> : じゃあ、こっちは...金曜日まで待たないといけないが、その1分以内にティックがあれば開くはずだ。 >> それこそ、金曜日とか他の曜日にやってもアラートは効くし、注文は全然開かないし。 1...545556575859606162636465666768...1145 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
専門家の皆様、ご回答よろしくお願いします。
MetaEditorは、プログラム作成用テンプレートのテキストファイルを持っています。これらは、プログラムを作成する際にウィザードで使用されます。テンプレートテキストには、作成されるプログラムファイルのタイプのパラメータが指定されます。コードテキストには表示されないが、それらのパラメーターの間にタグがある。しかし、端末はなぜかそれを認識する。Expert Advisor を作成した場合、次のティック以降に Start 機能が起動します。 インジケータを作成した場合、ティックなしで Start 機能が起動します。タグやその中に入っているものはどこに行くのですか?
その原因がどこにあるのか、さらに2つのテストを行いました。
1.iniから文字列の配列ではなく、個別の変数に読み込んでいます。結果は予想通り、つまりコピーするのは値ではなく参照です。
を表示します。
2009.04.10 14:31:42 example AUDUSD,H4: init.4: Cross_3=USDJPY
2009.04.10 14:31:42 example AUDUSD,H4: init.4: Cross_2=GBPUSD
2009.04.10 14:31:42 example AUDUSD,H4: init.4: Cross_1=EURUSD
2009.04.10 14:31:42 example AUDUSD,H4: init.3: read complete
2009.04.10 14:31:42 example AUDUSD,H4: init.3: Cross_3=USDJPY
2009.04.10 14:31:42 example AUDUSD,H4: init.3: Cross_2=GBPUSD
2009.04.10 14:31:42 example AUDUSD,H4: init.3: Cross_1=EURUSD
2009.04.10 14:31:42 example AUDUSD,H4: -------------------------------
2009.04.10 14:31:42 example AUDUSD,H4: init.2: Cross_3=USDJPY
2009.04.10 14:31:42 example AUDUSD,H4: init.2: Cross_2=USDJPY
2009.04.10 14:31:42 example AUDUSD,H4: init.2: Cross_1=USDJPY
2009.04.10 14:31:42 example AUDUSD,H4: init.1: read complete
2009.04.10 14:31:42 example AUDUSD,H4: init.1: Cross_3=USDJPY
2009.04.10 14:31:42 example AUDUSD,H4: init.1: Cross_2=GBPUSD
2009.04.10 14:31:42 example AUDUSD,H4: init.1: Cross_1=EURUSD
2. 文字列の配列を返したが、関数がiniの文字列値を読み取るのではなく
win apiから何も呼び出さないテスト関数を使用しました。
出来栄え
2009.04.10 14:41:12 example AUDUSD,H4: init.4: CrossName[3]=CROSS_3
2009.04.10 14:41:12 example AUDUSD,H4: init.4: CrossName[2]=CROSS_2
2009.04.10 14:41:12 example AUDUSD,H4: init.4: CrossName[1]=CROSS_1
2009.04.10 14:41:12 example AUDUSD,H4: init.3: read complete
2009.04.10 14:41:12 example AUDUSD,H4: init.3: CrossName[3]=CROSS_3
2009.04.10 14:41:12 example AUDUSD,H4: init.3: CrossName[2]=CROSS_2
2009.04.10 14:41:12 example AUDUSD,H4: init.3: CrossName[1]=CROSS_1
2009.04.10 14:41:12 example AUDUSD,H4: -------------------------------
2009.04.10 14:41:12 example AUDUSD,H4: init.2: CrossName[3]=CROSS_3
2009.04.10 14:41:12 example AUDUSD,H4: init.2: CrossName[2]=CROSS_2
2009.04.10 14:41:12 example AUDUSD,H4: init.2: CrossName[1]=CROSS_1
2009.04.10 14:41:12 example AUDUSD,H4: init.1: 読み込み完了
2009.04.10 14:41:12 example AUDUSD,H4: init.1: CrossName[3]=CROSS_3
2009.04.10 14:41:12 example AUDUSD,H4: init.1: CrossName[2]=CROSS_2
2009.04.10 14:41:12 example AUDUSD,H4: init.1: CrossName[1]=CROSS_1
の変換に問題があるようであることがわかりました。
論理的には、シグナルが発生する前にORD型を定義しておくべきだと思ったのですが、そうしないと、取引基準にどのように考慮されるのでしょうか。
プライベートで回答する - この方法がより生産的だと思います。
車輪を再発明するのではなく、既製のExpert Advisorの一つを使用して、マーチンゲールで取引し、それがすでに実装されている方法を確認することは、はるかに簡単です。
例えば、Universum3.0。
ありがとうございます。すべてが大昔に発明されたものだということに、まったく同感です。
'フォーラムを散らかさないように、どんな新人の質問でも。プロに負けるな。あなたがいないとどこにも行けない』。
ありがとうございました。
テスターでEAをテスト する際、init()関数が実行される。
EAのinit()関数で、外部変数を正規化したい。
を作成し、これらの正規化された値を使用して、start() からインジケータを呼び出します。
この正規化をstart()に入れたくないのです。
ストラテジーテスターでEAの最適化を行う際、外部変数が変更されるたびにinit()関数が実行されるのでしょうか?テスターでEAをテストする際、init()関数が実行される。
EAのinit()関数で、外部変数を正規化したい。
を作成し、start()からインジケータを呼び出す際に、これらの正規化された(新しい)値を使用します。
この正規化をstart()に入れたくないのです。
ストラテジーテスターでEAの最適化を行う際、外部変数が変更されるたびにinit()関数が実行されるのでしょうか?はい、そうなります。
int start()
{
if (OrdersTotal() == 0
&& TimeDayOfWeek(TimeCurrent()) == 5
&& TimeHour(TimeCurrent()) == 12
&& TimeMinute(TimeCurrent()) == 30
&& TimeSeconds(TimeCurrent()) >= 00)
{
Alert("Тра ляля");
OrderSend(Symbol(),OP_SELL,Lots,Bid,3,0,0,"sell",999999,0,Red);
}
なぜここで注文が開かないのか、誰か心当たりはありませんか?私は何を間違えているのだろう?
じゃあ、こっちは...金曜日まで待つんだ、その1分間にティックがあれば開くはずだ。
じゃあ、こっちは...金曜日まで待たないといけないが、その1分以内にティックがあれば開くはずだ。
>> それこそ、金曜日とか他の曜日にやってもアラートは効くし、注文は全然開かないし。