MQL4、MQL5に関する初心者からの質問、アルゴリズムやコードに関するヘルプ、ディスカッションなど。 - ページ 217

 
Valerius:


引用をリフレッシュしてみてください。サービス - クォートアーカイブ - 通貨ペアを選択 - ダウンロード.

それでもダメなら、メタトレーダーを再インストールしてください。


何度も再インストールして、新しいアカウントも開設してみたのですが...。うまくいかなかった。何か関係があるのでしょうか?

ありがとうございます。

 
sidovi:


何度も再インストールを試み、新しいアカウントも開設してみたのですが...。うまくいかなかった。何か関係があるのでしょうか?

ありがとうございます。


インストール前にMetaTraderのインストーラーフォルダ内のファイルをすべて削除しましたか?

また、引用アーカイブは試されましたか?

 
a196012a:

すべての大規模な注文は、0.3ロットのボリュームでのみ開かれます。SLが0.3ロットの数量で寄り付き、それよりも少ない数量の注文はすべて0.1ロットの数量で発注されます。0.1と0.3のみです。他の巻はありません。

0.3ロットの注文をSLで決済する場合、0.1ロットの注文を決済した時間に対して、その注文を決済した時間を覚えておいてください。

よろしくお願いします。

私の投稿に誰かが返信したときに私の電子メールにメッセージを送信するオプションが設定されている場所を教えてください。

本当にありがとうございました。


そして、実際に必要なのはアルゴリズムなのか、それとも書かれた関数そのものなのでしょうか?
 
a196012a:

ご感想をお寄せいただきありがとうございました。

アルゴリズムか関数のどちらかが必要です。

主な内容は、0.3のSL注文を閉じた後、コードが時間の値を記憶することです。

この動作を具体的にどのようにコーディングすればよいのかわかりません。

出来高0.3の注文がSLで決済された場合

{
A2=小さい数量の注文が、その注文の終値に対応して開かれた時間帯の値
}

===================================================================================================

出来高0.1の複数の注文がSINGLE TICKでSLで決済された場合

{

EVERYクローズドオーダーの終値で 0.3ボリュームの別注文をオープンする。

}

===================================================================================================

出来高0.3の複数の注文がONE TIKEでSLで決済された場合

{

EVERY関連注文のオープニングアワーの値をボリューム0.1で記憶する。

}

注文を開いたり閉じたりするための動作コードを書きました(最初の投稿参照)

0.1オーダーオープン時間を短縮するために、どのようなコードを入れればいいのかがわからないのです。

注文の開始をコード化し、複数の注文が1ティックで閉じられた場合に開始時間の値を記憶する方法がわかりません。

私のアイデアの実現に関連して、私が書いたコードを変更する場合 - 私はあなたがそれを変更する場合は気にしない。

私のプログラムの最終目標は、オープニングアワーの値を記憶することです。他のすべての操作(オープニングオーダーを含む)は、この最終目標に従属するものであり、補助的な性格のものである。

もし、それがない方法を知っていたら、コードに含めなかったでしょう。

いつもありがとうございます。


以下はプログラムの例です。ぜひご覧ください。コメントも入っていますよ。

extern int MagicNumber=123;

datetime time;
//=================================================================
void start()
{
int er,se;

if(prov_open_orders()) //Проверяем, есть ли открытые ордера
 {
  se=sear();//Ищем последний ордер, который закрылся по стопу. Если последний ордер закрылся по профиту
            //то просто возвращается нулевое значение
            //Если Последний ордер закрылся по по стопу, то ищем ордер с лотом 0.1 и возвращаем
           //его время открытия. В переменной time будет время открытия ордера с лотом 0.1
  if(se==1)
   {
    if(OrderType()==OP_BUY && OrderProfit()<0)
     {//Если закрылся по стопу, то открываем противоположный ордер с увеличенным лотом
      er=OrderSend(Symbol(),OP_SELL,0.3,Bid ,3,Bid+400*Point,Bid-200*Point,"jfh",MagicNumber);
      time=SearTim(se);//Теперь находим время ордера с лотом 0.1
     }
   }
  if(se==2)
   {
    if(OrderType()==OP_SELL && OrderProfit()<0)
     {//Если закрылся по стопу, то открываем противоположный ордер с увеличенным лотом
      er=OrderSend(Symbol(),OP_BUY,0.3,Ask ,3,Ask-400*Point,Ask+200*Point,"jfh",MagicNumber);
      time=SearTim(se);//Теперь находим время ордера с лотом 0.1
     }
   }
 }

return;
}

//========================
bool prov_open_orders()
{
for(int is=OrdersTotal()-1; is >= 0; is--)
   {
    if(OrderSelect(is, SELECT_BY_POS, MODE_TRADES))
      {
       if(OrderSymbol()==Symbol() && OrderMagicNumber()==MagicNumber)
         {
          if(OrderType()==OP_BUY || OrderType()==OP_SELL)
           {
            return(false); // есть открытые ордера (любые)
           }
         }
      }
   }
return(true);
}

//=================================================================
datetime SearTim(int s)
{
for(int is=OrdersHistoryTotal(); is>=0; is--)
   {
    if(OrderSelect(is, SELECT_BY_POS, MODE_HISTORY))
      {
       if(OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber)
         {
          if(OrderType()==OP_SELL && OrderProfit()<0 && OrderLots()==0.1)
           {//Если закрылся по стопу, то открываем противоположный ордер с увеличенным лотом
            return(OrderOpenTime());
           }
          if(OrderType()==OP_BUY && OrderProfit()<0 && OrderLots()==0.1)
           {//Если закрылся по стопу, то открываем противоположный ордер с увеличенным лотом
            return(OrderOpenTime());
           }
         }
      }
   }
return(NULL);
}

//=================================================================
int sear()
{
for(int is=OrdersHistoryTotal(); is>=0; is--)
   {
    if(OrderSelect(is, SELECT_BY_POS, MODE_HISTORY))
      {
       if(OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber)
         {
          if(OrderProfit()>0)
           {//Если  закрылся по профиту то просто ухоим из цикла.
              return(0);
           }
          if(OrderType()==OP_SELL && OrderProfit()<0)
           {//Если закрылся по стопу, то открываем противоположный ордер с увеличенным лотом
            return(2);
           }
          if(OrderType()==OP_BUY && OrderProfit()<0)
           {//Если закрылся по стопу, то открываем противоположный ордер с увеличенным лотом
            return(1);
           }
         }
      }
   }
return(0);
}
 
Valerius:


インストール前にメタトレーダーがインストールされているフォルダー内のファイルを全て削除しましたか?

また、引用アーカイブは試されましたか?


はい、0件です :(
 
sidovi:

はい、0件です :(


そうすると、DCに連絡してサポートしてもらわなければなりませんが...。

初めて見ました。

 
Valerius:


そして、サポートはDCにだけ連絡する...。

これは、初めて見る光景です。


windows 10のサービスが影響しているのでしょうか?
 
sidovi:

windows 10のサービスが影響しているのでしょうか?

いや、ないですね。
 
Victor Nikolaev:

いや、ないんです。

ありがとうございました。
 
a196012a:

ありがとうございました。

コバレフさんのチュートリアルとそこに書かれている関数から、プログラミングの基礎を学んでいるところです。

あなたのコードには、私の本やCode Baseでは見たことのない関数がいくつかあります。

以下は、私が知らない機能です。

sear()です。

SearTim(se)です。

prov_open_orders()

どこで 読めるか教えていただけるとありがたいです。

まさに、そのコードの中に