[ARCHIVE] フォーラムを散らかさないように、どんなルーキーでも質問してください。プロフェッショナルは、通り過ぎないでください。Nowhere without you - 3. - ページ 573

 
//+------------------------------------------------------------------+
//|                                                       iTicks.mq4 |
//|                      Copyright © 2009, MetaQuotes Software Corp. |
//|                                        http://www.metaquotes.net |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2009, MetaQuotes Software Corp."
#property link      "http://www.metaquotes.net"
#include <WinUser32.mqh>
extern int  delay_MSecond = 2000;
//+------------------------------------------------------------------+
//| script program start function                                    |
//+------------------------------------------------------------------+
int start()
  {
//----
   while(!IsStopped()){
      PostMessageA (WindowHandle (Symbol(), Period()), WM_COMMAND, 33324, 0);
      PostMessageA (WindowHandle (Symbol(), 0), RegisterWindowMessageA ("MetaTrader4_Internal_Message"), 2, 1);
      Sleep(delay_MSecond);
   }
//----
   return(0);
  }
//+------------------------------------------------------------------+
 

ストラテジーテスターへの 問い合わせはどのように行われるのですか?例えば、次のようなコマンドを実行するにはどうしたらよいでしょうか。"特定のタイムフレームで特定のセットで EAでテストを実行する ファイルと、終了したら、 レポートを保存する"。

 
alsu:
他人のコードを一度に理解するのは難しい......。推測するに、Neuron.Study()関数でImin,Imax,Jmin,Jmaxの値をチェックするのでしょう。エポック0では、値32がlRとして渡され、これがインデックス付けに使われる(通常、配列のインデックスは0からsize-1まで行う)。ここにエラーがある可能性は十分にあります。

確かに、この計算には誤りがあった。感謝
 
alkador:

ストラテジーテスターへの問い合わせはどのように処理されるのですか?例えば、次のようなコマンドを実行するにはどうしたらよいでしょうか。"あるEAで、ある設定された ファイルで一定間隔でテストを実行し、終了したら、 レポートを保存する"。

起動時のコンフィグレーション

クライアント端末は、あらかじめ設定された状態で起動することができます。このため、クライアント端末には設定ファイル名をパラメータとして渡す。

例えば、こんな感じです。

  terminal.exe configstart.ini terminal.exe test1.txt terminal.exe "C:\Program Files﹑MetaTrader 4Ⓒconfigarette25.ini"

フルファイルパスを指定しない場合(Drive: \SubDirectory ◇FileName)は、クライアント端末のディレクトリを検索します。設定ファイルには、以下の行があります。
[パラメータ] = [値] です。

コメントはセミコロン(;)で始まり、評価されない。

設定ファイルのパラメータは、一般設定、プロキシサーバ設定(ターミナル設定表の「サーバ」タブ)、FTP設定(ターミナル設定表の「公開」タブ)、エキスパートアドバイザ設定(ターミナル設定表の「エキスパートアドバイザ」タブ)、エキスパートアドバイザまたはスクリプトのシングルスタート設定、戦略テスター起動の設定などのグループに分けることができます。

共通設定

  • Profile- profilesディレクトリのサブディレクトリ名.指定されたプロファイルに従って、クライアント端末でチャートが開かれます。このオプションが指定されない場合、現在のプロファイルが開かれます。

  • MarketWatch- マーケットウォッチウィンドウに表示するシンボルのリストを格納したファイル名(㊦)です。このファイルは、「Market Watch - Symbolsets - Save As」ウィンドウの コンテキストメニューコマンドで受信することができます。

  • Login- 起動時に接続するアカウントの番号です。このパラメータがない場合、現在のログインが使用されます。

  • パスワード- ログイン用のパスワードです。クライアント端末が個人情報をディスクに保存しており、接続する口座番号がリストにある場合、このパラメータは無視されます。

  • Server- 接続先となる取引サーバーの名前です。サーバー名は、configディレクトリに格納されている対応するsrvファイルの名前と一致します。接続するアカウントの情報がディスクに保存されている場合、このパラメータは無視されます。

  • AutoConfiguration- "true "または "false "で、自動設定を有効にするかどうかを指定します。このパラメータがない場合、現在のサーバー設定の値が使用されます。

  • DataServer- データセンターのアドレスです。サーバーの自動構成が有効な場合、このエントリは無視できる。このパラメータがない場合、現在のサーバー設定の値が使用されます。

  • EnableDDE- DDEサーバーを有効にするかどうかにより、"true "または "false "を指定します。このパラメータがない場合、現在のサーバー設定の値が使用されます。

  • EnableNews- ニュースの受信を許可するかどうかで "true "または "false "を指定します。このパラメータが存在しない場合、現在のサーバー設定の値が使用されます。

  ; 共通設定 Profile=test 3 MarketWatch=set2.set Login=12345 Password=xxxxxx Server=MetaQuotes-demo AutoConfiguration=false DataServer=192.168.0.1:443 EnableDDE=true EnableNews=false。

プロキシ設定

  • ProxyEnable- 取引サーバーとの接続にプロキシサーバーを使用するかどうかにより、"true" または "false" を指定します。

  • ProxyServer- プロキシサーバーのアドレスです。

  • ProxyType- プロキシサーバーの種類です。HTTP」、「SOCKS4」、「SOCKS5」のいずれかになります。

  • ProxyLogin- プロキシサーバーにログインします。

  • ProxyPassword- プロキシサーバーにアクセスするためのパスワードです。

これらのパラメータがない場合は、現在のクライアント端末の設定(クライアント端末設定表の「サーバ」タブの プロキシ設定)が使用されます。

  プロキシ設定 ProxyEnable=true ProxyServer=proxy.company.com:3128 ProxyType=HTTP ProxyLogin=user45 ProxyPassword=xxx

FTPの設定

  • FTPEnable- パブリッシングを有効/無効にします。使用可能な値は "true "または "false "である。

  • FTPPassiveMode- パッシブモードの有効/無効を設定します。 許容される値 "true "または "false".

  • FTPAccount- FTPにステータスデータを送信するアカウントの番号です。

  • FTPServer- FTPサーバーのアドレスです。

  • FTPLogin- FTP サーバーで認証を受けるためのログインです。

  • FTPPassword- FTPサーバーにアクセスするためのパスワードです。

  • FTPPath- レポートが置かれるFTPサーバー上のディレクトリの名前です。

  • FTPPeriod- FTPサーバーにレポートを送信する周期(分)です。

リストされたパラメータのいずれかが欠けている場合、クライアント端末の現在の設定が使用されます(端末設定の表の「Publishing」タブ)。

  FTPEnable=true FTPPassiveMode=false FTPAccount=12345 FTPServer=ftp.company.com FTPLogin=admin FTPPassword=pAssWOrd123 FTPPath=/inetpub FTPPeriod=10を設定。

専門家の設定

  • ExpertsEnable- エキスパートの有効/無効を設定します。

  • ExpertsDllImport- DLLインポートの有効/無効を設定します。

  • ExpertsDllConfirm- DLL関数呼び出しの手動確認を有効/無効にします。

  • ExpertsExpImport- 外部Expert AdvisorまたはMQL4ライブラリからの関数のインポートを許可/禁止します。

  • ExpertsTrades- EA 取引を有効/無効にします。

  • ExpertsTradesConfirm- Expert Advisorによる取引操作の手動確認を有効/無効にします。

Expert Advisorグループのすべてのパラメータは、"true "または "false "の値のみを取ることができます

上記のパラメータがない場合、現在のクライアント端末の設定が使用されます(端末設定の表の「Expert Advisors」タブ)。

  エキスパート設定 ExpertsEnable=true ExpertsDllImport=true ExpertsExpImport=true ExpertsTrades=true ExpertsTradesConfirm=false

Expert Advisorやスクリプトの単一設定

  • Symbol- ターミナル起動直後にチャートを開かなければならないシンボルの名前。クライアント端末を閉じた後、この追加チャートの情報は保存されません。設定ファイルがない状態で端末を再起動した場合、このチャートは開かれません。このパラメータがない場合、追加チャートは開きません。

  • 期間- チャートの期間(M1、M5、M15、M30、H1、H4、D1、W1、MN)です。このパラメータがない場合は、H1が使用されます。

  • Template- チャートに適用するテンプレートファイル(㊦)の名前です。

  • Expert- クライアント端末の起動後に起動されるExpert Advisorの名前です。Expert Advisorは、SymbolとPeriodのパラメータに従って開かれたチャート上で起動します。Symbolパラメータがない場合、追加のチャートは開かれず、現在のプロファイルの最初のチャートでEAが起動されます。現在のプロファイルにチャートがない場合、Expert Advisor は起動されません。このパラメータがない場合、エキスパートは起動しません。

  • ExpertParameters- EAパラメータを含むファイル名( \expertspresets ディレクトリ)。このようなファイルはExpert Advisorのプロパティウィンドウで「Input parameters - Save」ボタンを押すことで作成することができます。通常、デフォルトとは異なるパラメータを格納するために使用される。このパラメータがない場合、デフォルトのパラメータが使用されます。

  • Script- クライアント端末の起動後に起動されるスクリプトの名前です。スクリプトは、Expert Advisor(前述)と同じルールで起動されます。

  • ScriptParameters- スクリプトのパラメータを含むファイル名 (\expertspresets ディレクトリ) です。このファイルはExpert Advisorと同じ方法で生成されます。

  Symbol=EURUSD Period=H4 Template=popular.tpl Expert=MACD Sample ExpertParameters=macd.set Script=period_converter ScriptParameters=チャートを開いてエキスパートまたはスクリプトを実行する。

ストラテジーテスターの起動設定

  • TestExpert- テスト用に起動されるExpert Advisorの名前です。このパラメータがない場合、テストは行われない。

  • TestExpertParameters- パラメータを含むファイルの名前( \tester ディレクトリ)。 このファイルはExpert Advisorのプロパティウィンドウの「Input parameters - Save」ボタンで作成できます。 通常、デフォルトとは異なるパラメータを保存するために使用されます。Testing」タブと「Optimization」タブ にあるテスト中のEAのその他のパラメータ(このパラメータがない場合は「Input parameters」タブ)には、最後のテスト後に自動的に \tester[Expert name].ini ファイルに保存される値が入力されます。

  • TestSymbol- Expert Advisorのテストが実行されるデータ上の金融商品の名前。このパラメータが利用できない場合、テスターで最後に使用された値が使用されます。

  • TestPeriod- チャートの期間 (M1, M5, M15, M30, H1, H4, D1, W1, MN). このパラメータがない場合は、H1が使用されます。

  • TestModel- テストモデル(All ticks、Benchmark、Open price)に応じて0、1または2。このパラメータを使用できない場合、値0(全目盛)が使用されます。

  • TestOptimization- 最適化の有効/無効を設定します。使用可能な値は "true "または "false "である。このパラメータがない場合、値 "false "が使用される。

  • TestDateEnable- "日付を使用する "オプションを有効/無効にします。 使用可能な値は "true "または "false "である。このオプションがない場合は、"false "が使用される。

  • TestFromDate- テスト範囲の開始日(YYYY.MM.DD)。このパラメータがない場合、"1970.01.01 "が使用されます。

  • TestToDate- テスト範囲の終了日をYYYY.MM.DDの形式で表したもの。このパラメータがない場合は、1970.01.01となります。

  • TestReport- テストレポート・ファイルの名前です。このファイルは、クライアント端末のディレクトリに作成されます。testerMovingAverageReport "のように相対パスを指定することができます。レポートファイル名に拡張子が指定されていない場合は、".htm "という拡張子が使用されます。このパラメータが指定されていない場合、テストレポートは生成されません。

  • TestReplaceReport- レポート・ファイルの繰り返し書き込みを許可/拒否します。 使用可能な値は "true "または "false "である。false "を設定し、この名前のレポートファイルがすでに存在する場合、レポートファイル名には角括弧で囲まれたシーケンス番号が付加されます。例えば、"MovingAverageReport[1].htm "のように。このパラメータがない場合、"false "が使用される。

  • TestShutdownTerminal- テスト後のターミナルのシャットダウンを有効または無効にします。使用可能な値は "true "または "false "である。このパラメータがない場合、値 "false "が使用される。テスト中にユーザーが「停止」ボタンを押した場合、ユーザーが制御を行ったため、このパラメータの値は「false」にリセットされる。

  テストエキスパート=移動平均 TestExpertParameters=ma0.set TestSymbol=EURUSD TestPeriod=H1 TestModel=2 TestOptimization=false TestDateEnable=true TestFromDate=1970.01.01 TestToDate=2006.06.06 TestReport=Moving AverageReport TestReplaceReport=falseテストShutdownTerminal=trueを開始します。

 
AndEv:
どなたかご存知の方、質問です。現在のチャートで0.5秒に一度「更新」ボタンを「押し」、インディケータを再初期化するループスクリプトが欲しいのです。"WindowRedraw()を使ってループするスクリプトを作ろうとしました。WindowRedraw()とSleep(500)を使ってループするスクリプトを作ってみましたが、インジケータが再初期化されないです。
本ライブラリには、MT4制御のための様々な関数が含まれています。Expert Advisorやインジケーターのチャート更新機能を含む。単体での機能もあります。一度スクリプトを走らせただけで終わりです。MT4をアンロードするまで、チャートは更新され続けます。
 

を参考にしました。

Hi all help please don't know how to implement it... can someone please advise ?売り注文と買い注文 が混在している場合 int Total1 = OrdersTotal();

if (Total1 <= MaxOrders || MaxOrders == 0) 全ての注文を管理し、売りと買いの 両方を指定する。

 

to Armen63

int CountBuys() 
{
   int l_count_4 = 0;
   int l_ord_total_12 = OrdersTotal();
   for (int l_pos_8 = 0; l_pos_8 < l_ord_total_12; l_pos_8++) {
      OrderSelect(l_pos_8, SELECT_BY_POS, MODE_TRADES);
      if (OrderSymbol() != Symbol() || OrderMagicNumber() != Magic) continue;
      if (OrderType() == OP_BUY) l_count_4++;
   }
   return (l_count_4);
}

int CountSells() 
{
   int l_count_4 = 0;
   int l_ord_total_12 = OrdersTotal();
   for (int l_pos_8 = 0; l_pos_8 < l_ord_total_12; l_pos_8++) {
      OrderSelect(l_pos_8, SELECT_BY_POS, MODE_TRADES);
      if (OrderSymbol() != Symbol() || OrderMagicNumber() != Magic) continue;
      if (OrderType() == OP_SELL) l_count_4++;
   }
   return (l_count_4);
}
 

フォーラムユーザーの皆様、こんにちは。

私はmql4を学び始めたばかりで、自分でEAを書くことにしました。

コードに次の条件を書く方法を知っていますか:最後の3つのアスク価格が前のものよりも高い場合(ask3>ask2>ask1)、買い注文を置く

私はアイデアを明確に述べたと思います)、何かが間違っている場合、私は指定します、尋ねてください)。

よろしくお願いします ))

 
このように
datetime ask=TimeCurrent();
   double ask1=0,ask2=0,ask3=0;
   ask1=Ask;
   if(ask!=TimeCurrent()){ask2=Ask;ask=TimeCurrent()}
   if(ask!=TimeCurrent()){ask3=Ask;}
   
もしかしたら、私が間違っているかもしれない、勉強中だ。
 
openlive:
例えば、私が間違っているかもしれませんが、私はちょうど学んでいるところです。


EAがすべてのティックを 処理することを前提とするならば、少し違った方法をとるべきでしょう。

int start(){
   static double ask1=1, ask2=-1, ask3=-1;
   ask3=ask2;
   ask2=ask1;
   ask1=Ask;

   if (ask3>0) {
      if (ask1>ask2) {
         if (ask2>ask3) {
             //условие выполнено для бай
         }
      }
      if (ask1<ask2) {
         if (ask2<ask3) {
             //условие выполнено для селл
         }
      }
   }
}