[存档]任何菜鸟问题,为了不使论坛变得杂乱无章。专业人士,不要与它擦肩而过。没有你,哪里都不能去 - 5. - 页 43

 
r772ra:
或者,你可以在信号到达后设置任何时间
我的变体意味着执行一些行动(在这种情况下是开立订单)的时限为1分钟(信号到达后)。然后:如果你迟到了,你就是迟到了。假设与服务器的连接在收到信号后立即中断,并在一个小时后恢复。为什么你会在一小时后开单?;)
 
TarasBY:

在一个全局变量中,写入信号发生时的时间值。

然后倒数你的一分钟(你可以这样做)。

这是事件发生后跟踪时间的解决方案之一。


不幸的是,这并不奏效,一分钟后,支撑线和阻力线应该被画成一个动作,但由于某些原因,它们没有出现在图表上。请看一下代码,错误在哪里?


bool  Fact_1 = false;                    // Глобальная перемен для бай.    
bool  Fact_2 = false;                    // Глобальная перемен для бай
bool  Fact_3 = false;                    // Глобальная перемен для бай

double support;
double resist;

 int timeFrame = 5;
 int numBars = 15;
 datetime gdt_TimeSignal;
//+------------------------------------------------------------------+
//| expert initialization function                                   |
//+------------------------------------------------------------------+
int init()
  {
//----

//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert deinitialization function                                 |
//+------------------------------------------------------------------+
int deinit()
  {
//----

  ObjectsDeleteAll();  
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start()
  {
//----


   //---------------------------------------------------------------------------
if (Fact_3==true)                            //Если событие уже..
          
                                              //..было, то выходим
     return(0);
 
//----

  //---- БЛОК ОТКРЫТИЯ  BUY--------------------------------------------------------------
 
 if (iMA(NULL,PERIOD_M5,50,0,MODE_EMA,PRICE_CLOSE,2)<iMA(NULL,PERIOD_M5,200,0,MODE_EMA,PRICE_CLOSE,0)&&
iMA(NULL,PERIOD_M5,50,0,MODE_EMA,PRICE_CLOSE,1)>=iMA(NULL,PERIOD_M5,200,0,MODE_EMA,PRICE_CLOSE,0))//если МА50 пересекает МА200 снизу вверх по M5
Fact_1 = true;       // Произошло событие 1  
//-
if (Fact_1 == true &&  Low[0]<= iMA(NULL,PERIOD_M5,50,0,MODE_EMA,PRICE_CLOSE,0))//если цена опустилась до МА50
 Fact_2 = true; // Произошло событие 2  


//if (Signal) gdt_TimeSignal = TimeCurrent();
if (Fact_2) gdt_TimeSignal = TimeCurrent();


  if (gdt_TimeSignal != 0) if (iBarShift (NULL, 1, gdt_TimeSignal) == 1)
    {
        //---- Открываете ордер
       // OrderSend ();
  //---------------------------------------------------------------------------------    
{
// Определяем линии поддержки\сопротивления
  support = 10000;
  resist = 0;
 
  for(int u = 1;u<=numBars;u++)
  {
   if(support>iLow(Symbol(),timeFrame,u))
     support = iLow(Symbol(),timeFrame,u);
   if(resist<iHigh(Symbol(),timeFrame,u))
     resist = iHigh(Symbol(),timeFrame,u);
  }   
   ObjectSet("lineSupport",OBJPROP_PRICE1,support);
  ObjectSet("lineResist",OBJPROP_PRICE1,resist);
 
 }


 //----
  {
    ObjectCreate("lineSupport",OBJ_HLINE,0,0,0);
    ObjectSet("lineSupport",OBJPROP_COLOR,Blue);
    
    ObjectCreate("lineResist",OBJ_HLINE,0,0,0);
    ObjectSet("lineResist",OBJPROP_COLOR,Red);
    }
//-------------------------------------------------------------
 
        gdt_TimeSignal = 0;
    }



//что сюда добавить что бы линии появившись, оставались на месте?




//----
   return(0);
  }

 
TarasBY:

这里写的是胡说八道。

阅读关于iCustom()


谢谢你,我读过了,也许我应该找一个例子,我什么都不懂。
 
Andrey-F:

请帮助我,告诉我如何在两到三行内实现EA代码。

当有信号出现时(例如,两个MAs的交叉点)

1.专家顾问确定信号的时间(以小时、分钟为单位),存储它。

2.倒数一分钟。

然后,专家顾问准备执行一个行动(如开立一个订单)。

谢谢你们,一切都在正常工作,我只是没有以正确的方式插入信号。
 

我无法理解Codabase中指标的发布。像一个状态是可以公布的,即逻辑上要等到版主将这个火鸡放在一般的访问中,但已经几天了,没有结果。有什么问题吗?

ps.这是我第一次在这里公布代码。

 
madzx:

是的,我想是的 !我已经真正掌握了它的窍门,我可以很容易地做到不写到磁盘上 !
我只是把一个标准终端的缰绳系在另一个终端上而已
我只是把一个标准终端的缰绳绑在了另一个终端上)。

请原谅我,但我们还是要这样做。
因为正如Freddie Mercury先生所说。
表演必须继续下去!

因此,让我们把规格搞清楚。
按照我的理解。

1.在一个账户中,我打开了大量的窗口(10个),有任何一组货币对的图表。

2.每个图表上都有一个工作马--专家顾问,它做一些事情。

3.该账户必须满足以下条件。

3.1 账户中公开市场订单的总数不得超过5个。
马匹类型的订单(待定)不应该被计算在内(我认为是这样,但你没有具体说明。)
3.2 根据账户上的一组图表,形成一定的符号列表。

交易的金融工具的类型,每个工具在任何时候都不能有超过一个订单开放。

在任何时候,都不得有超过一个未结订单。

---------------------------------------------------------

像这样的东西!看看一切是否正确!
那么请告诉我们应该用什么语言来完成(如mq4或mq5)。
和你交易的实例列表 - 是固定的还是每次都不同

我认为它应该是每个EA文本中的一个简短粘贴

(如果你愿意,你可以把它作为一个程序提交)将允许它

决定当前任何行动的现有权限 ...

我现在想告辞了,因为现在是凌晨5点 :))

疯疯癫癫




谢谢你的参与。但我不认为有任何必要。

按照r772ra 的建议,问题得到了如下解决。

或者也许像这样:

if(NumberOfPositions("EURUSD")==0 && NumberOfPositions()<5)
而这里有一个函数
 
Roman.:

不要徘徊在茫茫人海中。你可以为独特的魔法符号进行奖金交易(将你的魔法指令分配给所选符号上的奖金)。然后,使用条件性的if - else操作符,你通过符号和魔法符号连接过滤器,使用这个函数 从Kim I.V.有不同的输入值。

NumberOfOrders()函数。

.就这样了。




谢谢,找到了一个更简单的解决方案。
 
Kobalerro:

谢谢你,已经找到了一个更简单的解决方案。

好的!谢谢你发布的解决方案。
 
Kobalerro:

谢谢你的参与。但我不认为有什么更多的东西。

按照r772ra 的建议,问题得到了如下解决。

或者也许像这样:

而这里的功能

好的!顺应潮流,好好打猎!!。

疯疯癫癫
 
Kobalerro:

谢谢你的参与。但我不认为有什么更多的东西。

按照r772ra 的建议,问题得到了如下解决。

或者也许像这样:

而这里的函数

如果你喜欢这个方案,你可以进一步简化代码。

if(NumberOfPositions("EURUSD")==0 && OrdersTotal()<5)

但这样写可能更正确。

if(NumberOfPositions(Symbol())==0 && OrdersTotal()<5)

如果它不 "幼稚",那么就应该使用Magik(迟早你也会想开一个手动订单或在它附近放一个EA)。

if(NumberOfPositions(Symbol(), Magic)==0 && NumberOfPositions("", Magic)<5)

在这种情况下,所有的EA都应该有相同的Magik,不要忘记在对订单列表的其他操作中使用Magik和图表符号的过滤器。

    for (int li_pos = OrderTotal() - 1; li_pos >= 0; li_pos--)
    {
        if (!OrderSelect (li_pos, SELECT_BY_POS, MODE_TRADES)) continue;
        if (OrderMagicNumber() != Magic) continue;
        if (Symbol() != OrderSymbol()) continue;
        //---- дальнейшие опреации (модификация, удаление и т.д.)
    }

我希望你已经在外部变量中声明了magik,或者作为一个常量。

#define Magic  555