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

 

皆さんこんにちは、

私は新参者なので、適切な場所に書けることを願っています:

「過去の損失と現在のドローダウンがx%以下になったら全取引を決済する」+「セッション/日が終わるまで全取引を即座に決済する」。

どなたかこの方法をご存知の方、または私を助けてくださる方がいらっしゃいましたら、ご連絡いただけると助かります。

ーありがとうございます。)

 
jeremy10p100 # :

皆さん、こんにちは、

私は新しいので、私は適切な場所に書いている願っています:私は私のお金の管理で私を助けることができるEAをコード化するために探しています:

「過去の損失と現在のドローダウンがx%以下になったら全取引をクローズする" + "セッション/日終了まで全取引を即座にクローズする"。

どなたかこの方法をご存知の方、または私を助けてくださる方がいらっしゃいましたら、ご連絡いただけると助かります。

ありがとうございます。)

こんにちは、

https://www.mql5.com/fr/search#!keyword=money%20management&module=mql5_module_marketを 検索してみてください。

また、フリーランスにカスタマイズされたソリューションを注文することもできます -https://www.mql5.com/fr/job

 
皆さん、こんにちは!配列からデータベースに値をコピーする方法を教えてください。 これは、データベースで作業する例のコードですが、配列からデータベースにSALARYフィールドにデータを挿入しようとすると、スクリプトを実行するときにエラーが発生します。 また、別の質問ですが、例えば、注文のデータを持つ配列があり、その数がかなり多い場合、この配列をすべてデータベースのテーブルに移動するにはどうすればよいのでしょうか?
 VALUES (1,'Paul',a,'California',29000.00)  -->  VALUES (1,'Paul',a,'California',Mass[0])

void OnStart()
  {
  double Mass[4]={1,2,5,6};
  int a =222;
  Alert(Mass[3]);
   string filename="company.sqlite";
//--- создадим или откроем базу данных в общей папке терминалов
   int db=DatabaseOpen(filename, DATABASE_OPEN_READWRITE | DATABASE_OPEN_CREATE |DATABASE_OPEN_COMMON);
   if(db==INVALID_HANDLE)
     {
      Print("DB: ", filename, " open failed with code ", GetLastError());
      return;
     }
//--- если таблица COMPANY существует, то удалим её
   if(DatabaseTableExists(db, "COMPANY_2"))
     {
      //--- удаляем таблицу
      if(!DatabaseExecute(db, "DROP TABLE COMPANY_2"))
        {
         Print("Failed to drop table COMPANY with code ", GetLastError());
         DatabaseClose(db);
         return;
        }
     }
//--- создаем таблицу COMPANY
   if(!DatabaseExecute(db, "CREATE TABLE COMPANY_2("
                       "ID INT PRIMARY KEY     NOT NULL,"
                       "NAME           TEXT    NOT NULL,"
                       "AGE            INT     NOT NULL,"
                       "ADDRESS        CHAR(50),"
                       "SALARY         REAL );"))
     {
      Print("DB: ", filename, " create table failed with code ", GetLastError());
      DatabaseClose(db);
      return;
     }

//--- вставляем данные в таблицу
   if(!DatabaseExecute(db, "INSERT INTO COMPANY_2 (ID,NAME,AGE,ADDRESS,SALARY) VALUES (1,'Paul',a,'California',Mass[0]); "
                       "INSERT INTO COMPANY_2 (ID,NAME,AGE,ADDRESS,SALARY) VALUES (2,'Allen',25,'Texas',Mass[1]); "
                       "INSERT INTO COMPANY_2 (ID,NAME,AGE,ADDRESS,SALARY) VALUES (3,'Teddy',a,'Norway',Mass[2]);"
                       "INSERT INTO COMPANY_2 (ID,NAME,AGE,ADDRESS,SALARY) VALUES (4,'Mark',25,'Rich-Mond',65000.00);"))
     {
      Print("DB: ", filename, " insert failed with code ", GetLastError());
      DatabaseClose(db);
      return;
     }

//--- создадим запрос и получим хендл на него
   int request=DatabasePrepare(db, "SELECT * FROM COMPANY_2");
   if(request==INVALID_HANDLE)
     {
      Print("DB: ", filename, " request failed with code ", GetLastError());
      DatabaseClose(db);
      return;
     }

   DatabasePrint(
      db,          // хендл базы данных, полученный в DatabaseOpen
      "COMPANY_2",      // таблица или SQL-запрос
      0              // комбинация флагов
   );
  }
//+------------------------------------------------------------------+


 

例えば、こうしてみてほしい。

代わりに

if(!DatabaseExecute(db, "INSERT INTO COMPANY_2 (ID,NAME,AGE,ADDRESS,SALARY) VALUES (1,'Paul',a,'California',Mass[0]); "
                       "INSERT INTO COMPANY_2 (ID,NAME,AGE,ADDRESS,SALARY) VALUES (2,'Allen',25,'Texas',Mass[1]); "
                       "INSERT INTO COMPANY_2 (ID,NAME,AGE,ADDRESS,SALARY) VALUES (3,'Teddy',a,'Norway',Mass[2]);"
                       "INSERT INTO COMPANY_2 (ID,NAME,AGE,ADDRESS,SALARY) VALUES (4,'Mark',25,'Rich-Mond',65000.00);"))

と書く

if(!DatabaseExecute(db, "INSERT INTO COMPANY_2 (ID,NAME,AGE,ADDRESS,SALARY) VALUES (1,'Paul',a,'California'," + DoubleToString(Mass[0]) + "); "
                       "INSERT INTO COMPANY_2 (ID,NAME,AGE,ADDRESS,SALARY) VALUES (2,'Allen',25,'Texas'," + DoubleToString(Mass[1]) + "); "
                       "INSERT INTO COMPANY_2 (ID,NAME,AGE,ADDRESS,SALARY) VALUES (3,'Teddy',a,'Norway'," + DoubleToString(Mass[2]) + ");"
                       "INSERT INTO COMPANY_2 (ID,NAME,AGE,ADDRESS,SALARY) VALUES (4,'Mark',25,'Rich-Mond',65000.00);"))

これだけではありません。

 
Yuriy Bykov #:

例えば、こんな風にやってみてほしい。

代わりに

の代わりに

唯一の方法ではない。

ありがとうございます。他の方法は?

 
lego9955 カスタムキャラクターを作成 するスクリプトの再設計をお願いします。

1つのキャラクターだけでなく、スクリプトに書かれた複数のキャラクターを作成するように変更する必要があります。

例えば、3つのAB AC AD、将来的にはこの原則の任意の数。

毎回、リストから次の記号名に置き換えて循環させる。

こんな感じだ:

string sNames = "AB,AC,AD";
string aNames[];

void OnStart()

  {
   int i;
   bool ch=true;

   if(StringSplit(sNames,StringGetCharacter(",",0),aNames) <= 0)return;

   ResetLastError();
   for(i=0; i<ArraySize(aNames); i++)
      {
       ch=ch && CustomSymbolCreate(aNames[i]);
       if(!ch)
         {
          PrintFormat("Symbol '%s' : error %d",aNames[i],GetLastError());
          break; // При первой ошибке выходим
         }
      }
   if(!ch)return;
   ...
  } 
 

前にも同じことをして、やったと思って投稿を削除したんだ。

void OnStart()
{
string arr[]= { "AB", "AC", "AD" };

  for(int i=0; i<ArraySize(arr); i++)

  {
   bool ch =CustomSymbolCreate(arr[i]);
   SymbolSelect(arr[i],true); 
  }  
}

ページをリフレッシュしたら、あなたが返信していた。はい、エラー 処理はより正しくなりました。ありがとう!

 
lego9955 エラー 処理はありがとう!
ArraySize(arr)

ーループのー外ーでーでーでー

 
lynxntech #:

ループの外側でuintを定義する方が正しいだろう。

私はよくそうしているが、コンパイラーはこのような標準的なことを最適化してくれると信じたい。

 

ロボットには、ストキャスティクスと RSIの 2つのフィルターがあり、それぞれにパラメーターが設定されている。フィルターは1つだけ使用する。つまり、ストキャスティクスが オンの場合、RSIは オフであるべきで、逆も同様である。

私はこれを実行した:

  • ストキャスティクスと RSIの 入力 変数を作り、その働きを有効・無効にした。
  • OnInit ブロック で、もしStochasticと RSIが 同時にオンなら、INIT_PARAMETERS_INCORRECT エラーをチェックします。
  • OnInit ブロックで、Stochastic 、そのパラメータがすべてゼロでなければなりません。そうでなければ、エラーINIT_PARAMETERS_INCORRECT/RSIと 同様です。

目的

  • 目的:互換性のない選択肢を最適化するときに時間を無駄にしない。例えば、RSIが 選択された場合、ストキャスティクス のパラメータ(買われすぎ/売られすぎゾーンのサイズ、KD 期間、減速、スムージング方法、価格)は検索されないようにする。
  • 私のオプションは機能しないことがわかりました。最適化の間、これらのバリエーションはとにかく過剰に最適化されるようです。

RSIが 有効になっているときにオプティマイザがストキャスティクスの パラメーターを検索しないようにする方法、またその逆の方法を教えてください。

理由: