[ARCHIVE!] フォーラムを散らかさないように、どんなルーキーの質問でも。プロフェッショナルは、通り過ぎないでください。あなたなしではどこにも行けない - 4. - ページ 59

 
皆さん、本当にありがとうございました!全ては思い通りに動いています。スマイリーフェイスがあればいいのに、いっぱい入れたい :)
 
oleg_felix: 売買が成立する時間帯を設定する方法を教えてください。 (開始時刻と終了時刻)

こちらもご覧ください: https://www.mql5.com/ru/forum/135030

 
助かりました!ありがとうございます!間に合いました。
 

簡単なコマンドの書き方を教えてください。

- 注文を指定されたpips数のロスレス・ポジションに移行 させるために

 
oleg_felix:

簡単なコマンドの書き方を教えてください。

- オープンオーダーで、トレードで一定の利益が出た時点で、ブレイクイーブン(スプレッドを考慮)になるようにストップロスを設定する。

同じマジックナンバーのオーダーを白黒に変換する関数がありますので、試してみてください。


extern int     LevelWLoss        = 100;       // Уровень безубытка в пп
extern int     LevelProfit       = 300;       // Уровень профита в пп
//+----------------------------------------------------------------------------+
//|  Перенос стопа в безубыток                                                 |
//+----------------------------------------------------------------------------+
void MovingInWL(int Magic) {
  int i, k;
  string sym;
  double ord_open,ord_TP,ord_SL;
  
  k = OrdersTotal()-1;
  sym = Symbol();
  for (i=k; i>=0; i--) {
    if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
      if (OrderSymbol()==sym && OrderMagicNumber()==Magic) {
        ord_open = OrderOpenPrice();
        ord_TP   = OrderTakeProfit();
        ord_SL   = OrderStopLoss();
        if (OrderType()==OP_BUY) {
          if (NormalizeDouble(ord_SL,Digits)==NormalizeDouble(0,Digits) || 
              NormalizeDouble(ord_SL-ord_open,Digits)<NormalizeDouble(LevelWLoss*Point,Digits)) {
            if (NormalizeDouble(Bid-ord_open,Digits)>NormalizeDouble(LevelProfit*Point,Digits)) {
              OrderModify(OrderTicket(), ord_open, NormalizeDouble(ord_open+LevelWLoss*Point,Digits), ord_TP, 0, Yellow);
            }
          }
        }
        if (OrderType()==OP_SELL) {
          if (NormalizeDouble(ord_SL,Digits)==NormalizeDouble(0,Digits) || 
              NormalizeDouble(ord_open-ord_SL,Digits)<NormalizeDouble(LevelWLoss*Point,Digits)) {
            if (NormalizeDouble(ord_open-Ask,Digits)>NormalizeDouble(LevelProfit*Point,Digits)) {
              OrderModify(OrderTicket(), ord_open, NormalizeDouble(ord_open-LevelWLoss*Point,Digits), ord_TP, 0, Yellow);
            }
          }
        }
      }
    }
  }
return;
}
//_______________________________________________________________________
 

イゴールM


以下は私のEAコードです: Breakeven関数をどこに挿入したいですか?

extern int tp = 0;

extern int sl = 0;

extern int BeginHour = 0; // 開始時刻

extern inttern EndHour = 0; // 終了時刻

int start()

{

//----

if(OrdersTotal()==0 &&Hour() >=BeginHour&&Hour() <EndHour&&Close[1]<Open[1] &&High[1]<Bid) // 前のバーの価格がオープンより低いかどうかをチェックします。 の価格が現在のバーのBid価格 に達したとき、 前のバーの高値に 達したときに買い注文。

OrderSend(Symbol(),OP_BUY,1,Ask,0,Ask-sl*Point,Ask+tp*Point,", 777,0,Red);

if(OrdersTotal()==0 &&Hour() >=BeginHour&&Hour() <EndHour&&Close[1]>Open[1] &&Low[1]>Bid) // 注文がオープンされているか、前のバーの終値がオープン価格より低いかどうかをチェックします。価格が現在のバー価格 Bid , 直前のバーの高水準に 達したときに買い注文。

OrderSend(Symbol(),OP_SELL,1,Bid,0,Ask+sl*Point,Ask-tp*Point,", 777,0,Red) を実行します。

//----

return(0)です。

}

 
oleg_felix:

以下は私のEAコードです: Breakeven関数をどこに置くべきでしょうか?

今の段階では、あなたのコードの最後に私の関数を追加して、少なくともあなたのコードで次のようなことをすれば十分だと思うのですが。

if(OrdersTotal()>0) MovingInWL(777);

コードの先頭に追加する

extern int LevelWLoss = 100; // Breakeven level in pips
extern int LevelProfit = 300; // Profit level in pips

この問題を自分で解決できるかどうかは疑問ですが......。)

 
DmitriyN:
できます。また、職場に 設置したパソコンから、あるいはその逆に自宅にいるときにアカウントを管理することも可能です。
ありがとうございます。
 

ある人の関数をやり直そうとしたら、「ちょっと」失敗した、コードの一部を紹介します。

string FileName = test.txt;

int FileHandle=FileOpen(FileName,FILE_READ);
  if (FileHandle < 0)
     {
       Print("Файл не найден.");
     }
  
  string strInfo;
  int i;
  if (FileHandle>0)
     {
     while (i<20)
        {
          if (FileHandle == 1)
            {
            string strInfo1=FileReadString(FileHandle);
            }else{
                 if (FileHandle == 2)
                    {
                    string strInfo2=FileReadString(FileHandle);
                    }else{
                         if (FileHandle == 3)
                              {
                            string strInfo3=FileReadString(FileHandle);
                              }else{
                                   if (FileHandle == 4)
                                       {
                                       string strInfo4=FileReadString(FileHandle);
                                       }else{
                                            if (FileHandle == 5)
                                               {
                                               string strInfo5=FileReadString(FileHandle);
                                               }else{
                                                    if (FileHandle == 6)
                                                       {
                                                       string strInfo6=FileReadString(FileHandle);
                                                       }else{
                                                            if (FileHandle == 7)                                                            
                                                               {
                                                               string strInfo7=FileReadString(FileHandle);
                                                               }else{
                                                                    if (FileHandle == 8)                                                                    
                                                                        {
                                                                        string strInfo8=FileReadString(FileHandle);
                                                                        }else{
                                                                             if (FileHandle == 9)
                                                                                 {
                                                                                 string strInfo9=FileReadString(FileHandle);
                                                                                 }else{
                                                                                      if (FileHandle == 10)
                                                                                         {
                                                                                         string strInfo10=FileReadString(FileHandle);
                                                                                         }else{
                                                                                              Print("Ошибка! В файле должно быть не более 10 записей!");
                                                                                              }
                                                                                      }
                                                                             }
                                                                    }
                                                            }
                                                    }
                                            }
                              
                                   }
                          }
                   
                               
             
          }
          if (StrToInteger(strInfo1)==12345||StrToInteger(strInfo2)==12345||
              StrToInteger(strInfo3)==12345||StrToInteger(strInfo4)==12345||
              StrToInteger(strInfo5)==12345||StrToInteger(strInfo6)==12345||
              StrToInteger(strInfo7)==12345||StrToInteger(strInfo8)==12345||
              StrToInteger(strInfo9)==12345||StrToInteger(strInfo10)==12345)
          {
          isNumInFile = TRUE;
          }

        if (FileIsEnding(FileHandle) && isNumInFile == FALSE)
           {
           Print("Достигнут конец файла, искомое значение не найдено");
           break;
           }
        i++;

        if (i>100) break;
        }
     FileClose(FileHandle);
     }

test.txtファイルの最初の10行にある特定の値を検索し、行数が10行を超えると "Error!"というエラーが発生します。このファイルには10件以上のレコードがないはずだ!」と言っても、なぜかすべてのレコードを通過してしまいます。この問題を解決するために、もしコードを簡略化して別の関数として作ることができるのなら、どうか助けてください。

 

パラメータ参照渡しとは 何か、わかりやすく教えてください。ドキュメントを読みましたが、可能であることと、変数の識別の後に修飾子&を付けることが義務付けられていることのみ理解しました。解説付きの小型プログラムがあれば最高なのですが...。通常のパラメータ渡しと、参照によるパラメータ渡しの違いは何ですか?