[存档!]任何菜鸟问题,为了不使论坛变得混乱。专业人士,不要路过。没有你,哪里都不能去 - 4. - 页 59

 
非常感谢你们,一切都在正常工作。我希望我有笑脸,我想放一束:)
 
oleg_felix: 我如何设置执行交易的时间框架? (开始时间和结束时间)

见这里:https://www.mql5.com/ru/forum/135030

 
有所帮助,谢谢,及时解决了这个问题!
 

请告诉我如何写一个简单的命令。

- 一个订单转移 到一个无损的位置,以达到给定的点数

 
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函数?

外来的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) // 检查前一栏的价格是否低于开栏的价格。当 的价格达到当前柱子的买入价 ,即前一个柱子的高位 时买入订单。

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函数放在哪里?

我认为在这个阶段,只要在你的代码末尾加上我的函数,并在你的代码中至少做到以下几点就可以了。

如果(OrdersTotal()> 0) MovingInWL(777);

在你的代码的开头添加

Extern int LevelWLoss = 100; // 以点为单位的盈亏平衡水平
extern int LevelProfit = 300; // 以点为单位的盈利水平

我很怀疑你是否能自己解决这个问题 :)

 
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条!",但由于某些原因,它仍然会浏览所有的记录,请帮助我解决这个问题,如果你能简化代码,把它作为一个单独的函数。

 

各位,请用简单的形式解释一下,什么是参数的引用转移。我读过文件,但只了解到这是可能的,而且在变量标识后面必须加上修饰词&。如果在解释的同时有一个带有解释的小程序,那就更好了...通常的参数传递和通过引用传递参数之间有什么区别?