一个顾问,会在发射后在五分钟的图表上跟随汇率的情况。 - 页 7

 
int start()
{
if(OrdersTotal() !=0) return;

//----
if (iOpen(NULL,5,0)-Bid>Delta*Point) //The price has dropped more than Delta points



 
zhuki:
if(OrdersTotal ()!=0) 返回。

那么其他人的命令(对其他符号和魔术师)呢?在测试器中,它将工作,但如果账户上除了这个EA外还有其他东西,正确的方法如下

bool NmbrOfOpened(int Magic){
 
   int  _OrdersTotal=OrdersTotal();
 
   if (_OrdersTotal>0) {
       for (int i=0; i<_OrdersTotal; i++) {    
         OrderSelect(i, SELECT_BY_POS, MODE_TRADES);
         if (OrderMagicNumber()==Magic && OrderSymbol()==Symbol()) {
            return(true);  break; 
         }
       }
   }
   else return(false); 
 return(false);
}

如果当前的符号没有与指定的(传给它的)魔术师打开的位置,该函数将返回错误。

 
你要误导那个人,而他又看不懂描述。
想象一下,他将是多么的困惑,这就是为什么我以这样的方式来写,让他更好地理解它。
 
非常好,我正在掌握它的窍门:))
两个案子都赶上了,非常感谢。
 
只有专家顾问,我仍然不明白Delta函数是如何工作的
在我的条件下,交易没有被触发
Delta=30
这意味着我希望我的专家顾问开仓+-30个点。但它的开盘价是上下5-10个点,这并不清楚....
 
真的,Delta函数就是不知道它是如何工作的 :(
也许有一些其他简单的解决方案?
我发现了一个函数
Distance=30 // 当前价格到挂单 价格的距离
它不仅可以在挂单中实现吗?
这个想法是一样的:跟踪当前的交易栏,它的开盘价,如果在一个5分钟的交易栏中,它的价格将增加或减少,比如说,从该5分钟交易栏的开盘价中增加或减少30个点,只有在这时才开一个仓位......
我的策略在挂单时不工作.....

 

而你会在这里发布你的整个代码。看看为什么达美航空不工作了......

 
//+------------------------------------------------------------------+
//|                                                Expert-000001.mq4 |
//|                                    Copyright © 2008, salesman*** |
//|                                         http://www.forexgrand.ru |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2008, salesman***"
#property link      "http://www.forexgrand.ru"
#include <WinUser32.mqh>
#include <stdlib.mqh>
extern double StopLoss=30;                        // Stop Loss
extern double TakeProfit=3;                       // Take Profit
extern double Lots=0.5;                           // Объем сделки в %
extern double Slippage =3;                        // Максимальное отклонение от запрошенной цены
extern double MagicNumber=0;                      // Order ID
int  ticket;
int Delta=30;                                     // Сигнал приказа в пунктах
int TimeForSleep = 10;                            // Время для отдыха после сделки

//+------------------------------------------------------------------+
//| expert initialization function                                   |
//+------------------------------------------------------------------+
int init()
  {
//----
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert deinitialization function                                 |
//+------------------------------------------------------------------+
int deinit()
  {
//----
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start()
{
if(OrdersTotal()!=0)  return; //Выполнять только одну сделку.

//----
if (iOpen(NULL,0,0)-Ask>=Delta*Point) //Цена упала больше или = Delta пунктов
//Null-тек инструмент, 0-тек.график, 0-слежка за тек баром
{
ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,Bid-StopLoss*Point,Ask+TakeProfit*Point,"Купил",MagicNumber,11111,Green);

}
if (iOpen(NULL,0,0)-Bid<=Delta*Point) //Цена выросла больше или = Delta пунктов
{
ticket=OrderSend(Symbol(),OP_SELL,Lots,Bid,3,Ask+StopLoss*Point,Bid-TakeProfit*Point,"Продал",MagicNumber,22222,Green);
}
//----
return(0);
}




//+------------------------------------------------------------------+
//+------------------------------------------------------------------+

以下是整个代码.....
 

是的,确实如此。Delta.... 不起作用

显然,这里有必要用三角洲的标志(极性)来理解在买入和卖出时,在上面的代码中 "为",例如,在买入值(iOpen(NULL,0,0)-Ask所有时间将是负的。而交易是在条形图的开盘价开的(iOpen(NULL,0,0)-Ask>=Delta...

如果你这样尝试(购买)-

if (Ask - iOpen(NULL,0,0)>=Delta*Point) //Цена выросла на больше или = Delta пунктов
 
即最终我们需要测试这个变体:

int start()
{
if(OrdersTotal()!=0) return; //只关注一个交易。

//----
if (Bid - iOpen(NULL,0,0)<=Delta*Point) //价格下跌少于或=Delta点
//无技术工具,0-技术.图表,0-跟踪文本条
{
ticket=OrderSend(Symbol(,OP_BUY,Lots,Ask,3,Bid-StopLoss*Point,Ask+TakeProfit*Point, "Buy",MagicNumber, 11111,Green);

}
if (Ask - iOpen(NULL,0,0)>=Delta*Point) //价格上涨超过或=Delta点
{
ticket=OrderSend(Symbol(,OP_SELL,Lots,Bid,3,Ask+StopLoss*Point,Bid-TakeProfit*Point, "Sold",MagicNumber,2222,Green);
}
//----
return(0);
}
我猜得没错吧,还是我把行中的Ask和Bid搞混了:
if (Bid - iOpen(NULL,0,0)<=Delta*Point) //Цена упала на меньше или = Delta пунктов

if (Ask - iOpen(NULL,0,0)>=Delta*Point) //Цена выросла на больше или = Delta пунктов