[警告关闭!]任何新手问题,为了不给论坛添乱。专业人士,不要走过。没有你,哪里都不能去。 - 页 447

 
T-G >>:

а почему как функция не работает а в старте работает?

事实上,这是一个函数,只是它取决于它是什么if(Close_){ - 在启动内部应用,如果void Close_() { 作为一个函数,在启动外部工作。


void Close_() {
for (int trade = OrdersTotal() - 1; trade >= 0; trade--) {
OrderSelect( trade, SELECT_BY_POS, MODE_TRADES);
if (OrderSymbol() == Symbol()) {
if (OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber) {
if (OrderType() == OP_BUY) OrderClose(OrderTicket(), OrderLots(), Bid, slip, Blue);
if (OrderType() == OP_SELL) OrderClose(OrderTicket(), OrderLots(), Ask, slip, Red);
}
Sleep(1000);
}
}
}
 
sergeev >>:


алгоритм у вас верный. сделайте распринтовку возможных ошибок и вообще ухзнать куда доходит эксперт при выполнении этого кода.

+ выведите расчитанные значения рси.

)))),我认为这家伙的代码有一个错误.....,虽然我是个新手,我可能是错的。

 
似乎没有错误,只是一个小错误,在这里睡觉 是不必要的:)
 
gince >>:

//во внешние перменные
extern bool Close_ =true; //использовать закрытие по РСИ вкл выкл. 
// в старт закиньте
if ( Close_){
for (int trade = OrdersTotal() - 1; trade >= 0; trade--) {
OrderSelect( trade, SELECT_BY_POS, MODE_TRADES);
if (OrderSymbol() == Symbol()) {
if (OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber) {
if ((OrderType() == OP_BUY)&&( rsi_1 > Level_2 && rsi_0 < Level_2)) OrderClose(OrderTicket(), OrderLots(), Bid, slip, Blue);
if ((OrderType() == OP_SELL)&&( rsi_1 < Level_1 && rsi_0 > Level_1)) OrderClose(OrderTicket(), OrderLots(), Ask, slip, Red);
}
Sleep(1000);
}
}
}
 

这是一个标准的Matsimple。我只是想弄清楚为什么它不能正确关闭。我正在尝试关闭交易的逻辑。一部分由RSI组成--这就是为什么它不工作了。


//if(Open[1]>ma_2 && Close[1]<ma_2) OrderClose(OrderTicket(),OrderLots(),Bid,3,White);
         if( rsi_1 > Level_2 && rsi_0 < Level_2) {OrderClose(OrderTicket(),OrderLots(),Bid,3,White);
         Print( rsi_0,"     ", rsi_1);}
         break;
        }
      if(OrderType()==OP_SELL)
        {
         //if(Open[1]<ma_2 && Close[1]>ma_2) OrderClose(OrderTicket(),OrderLots(),Ask,3,White);
         if( rsi_1 < Level_1 && rsi_0 > Level_1){OrderClose(OrderTicket(),OrderLots(),Ask,3,White);
          Print( rsi_0,"     ", rsi_1);}
         break;

在打印出来后改变了shifft。

rsi_0=iRSI( NULL,0,4, PRICE_CLOSE, 1 ); 
rsi_1=iRSI( NULL,0, 4, PRICE_CLOSE, 2 ) ;
 
尊敬的大师们!
,请不要让它不被注意。

我买了一台惠普 笔记本电脑,预装了WindowsVista 64位操作系统。
开始在EA的工作中出现问题。开始时,我的交易是以某种方式打开的。但在一个星期内,我的专家顾问完全停止了一些交易的开放。我们试了又试,最后决定,问题是由64位引起的。我们重新安装了专家顾问,并将其安装在32位和7位Windows 上。它在一天内工作正常,然后再次失败。也许我得到了某种Windows的更新,影响了它?

在其他电脑上(同事),EA的工作根本没有任何中断。我的旧笔记本电脑已经不在了,而且我现在什么也买不到。

顺便说一下,我在Instatrader平台上工作。

如果有人遇到过或有任何关于如何解决这个问题的建议,请告知。

 

帮我重新做一个简单的EA,我已经挣扎了一个星期!!!!或者再写一遍,所有的EA都太复杂了,我不能为我调整它!

我想在这个EA中加入一个MACD指标,它发出买入和卖出的信号,EA必须同时进行。应该有不超过三个未平仓的买入和三个未平仓的卖出订单。所有的订单应该只通过止损和止盈来关闭,而不是通过专家顾问的力量。

//--------------------------------------------------------------------
extern int     period_EMA           = 28,
               period_WMA           = 8 ,
               stoploss             = 50,
               takeprofit           = 50,
               risk                 = 10;
double  LOT;
//--------------------------------------------------------------------
double SL, TP;
int TimeBar; //глобальная переменная
//--------------------------------------------------------------------
int start()
{
   if ( TimeBar==Time[0]) return(0);
   if ( TimeBar==0) { TimeBar=Time[0];return(0);}//первый запуск программы
   double EMA0 = iMA(NULL,0, period_EMA,0,MODE_EMA, PRICE_OPEN,0);
   double WMA0 = iMA(NULL,0, period_WMA,0,MODE_LWMA,PRICE_OPEN,0);
   double EMA1 = iMA(NULL,0, period_EMA,0,MODE_EMA, PRICE_OPEN,1);
   double WMA1 = iMA(NULL,0, period_WMA,0,MODE_LWMA,PRICE_OPEN,1);
   if ( EMA0< WMA0&& EMA1> WMA1) //Buy
   {
      TimeBar=Time[0];                            
      TP  = Ask + takeprofit*Point;
      SL  = Ask - stoploss*Point;     
      LOT = LOT( risk,1);
      CLOSEORDER("Sell");
      OPENORDER ("Buy");
   }
   if ( EMA0> WMA0&& EMA1< WMA1) //Sell
   {
      TimeBar=Time[0];                            
      TP = Bid - takeprofit*Point;
      SL = Bid + stoploss*Point;            
      LOT = LOT( risk,1);
      CLOSEORDER("Buy");
      OPENORDER ("Sell");
   }
return(0);
}
//--------------------------------------------------------------------
void CLOSEORDER(string ord)
{
   for (int i=OrdersTotal()-1; i>=0; i--)
   {                                               
      if (OrderSelect( i, SELECT_BY_POS, MODE_TRADES)==true)
      {
         if (OrderSymbol()!=Symbol()) continue;
         if (OrderType()==OP_BUY && ord=="Buy")
            OrderClose(OrderTicket(),OrderLots(),Bid,3,CLR_NONE);// Close Buy
         if (OrderType()==OP_SELL && ord=="Sell")
            OrderClose(OrderTicket(),OrderLots(),Ask,3,CLR_NONE);// Close Sell
      }   
   }
}
//--------------------------------------------------------------------
void OPENORDER(string ord)
{
   int error;
   if ( ord=="Buy" ) error=OrderSend(Symbol(),OP_BUY, LOT,Ask,2, SL, TP,"", 1,3);
   if ( ord=="Sell") error=OrderSend(Symbol(),OP_SELL, LOT,Bid,2, SL, TP,"",-1,3);
   if ( error==-1) //неудачная покупка OK
   {  
      ShowERROR( error,0,0);
   }
return;
}                  
//--------------------------------------------------------------------
void ShowERROR(int Ticket,double SL,double TP)
{
   int err=GetLastError();
   switch ( err )
   {                  
      case 1:                                                                               return;
      case 2:   Alert("Нет связи с торговым сервером   "              , Ticket," ",Symbol());return;
      case 3:   Alert("Error  неправильные параметры   Ticket ",       Ticket," ",Symbol());return;
      case 130: Alert("Error близкие стопы   Ticket ",                 Ticket," ",Symbol());return;
      case 134: Alert("Недостаточно денег   ",                         Ticket," ",Symbol());return;
      case 146: Alert("Error Подсистема торговли занята ",             Ticket," ",Symbol());return;
      case 129: Alert("Error Неправильная цена ",                      Ticket," ",Symbol());return;
      case 131: Alert("Error Неправильный объем ",                     Ticket," ",Symbol());return;
      case 4051:Alert("Error Недопустимое значение параметра функции ", Ticket," ",Symbol());return;
      case 4105:Alert("Error Ни один ордер не выбран ",                Ticket," ",Symbol());return;
      case 4063:Alert("Error Ожидается параметр типа integer ",        Ticket," ",Symbol());return;
      case 4200:Alert("Error Объект уже существует ",                  Ticket," ",Symbol());return;
      default:  Alert("Error  " , err,"   Ticket ",                     Ticket," ",Symbol());return;
   }
}
//--------------------------------------------------------------------
double LOT(int risk,int ord)
{
   double MINLOT = MarketInfo(Symbol(),MODE_MINLOT);
   LOT = AccountFreeMargin()* risk/100/MarketInfo(Symbol(),MODE_MARGINREQUIRED)/ ord;
   if ( LOT>MarketInfo(Symbol(),MODE_MAXLOT)) LOT = MarketInfo(Symbol(),MODE_MAXLOT);
   if ( LOT< MINLOT) LOT = MINLOT;
   if ( MINLOT<0.1) LOT = NormalizeDouble( LOT,2); else LOT = NormalizeDouble( LOT,1);
   return( LOT);
}
//--------------------------------------------------------------------

 
Serg-s-n >>:

Помогите переделать простой советник, бьюсь неделю!!!! Или написать снова, а то все советники слишком сложные и я их не могу под себя подстроить!!

Суть такая: Хочу добавить в этот советник( торгующий на пересечении) ещё индикатор MACD, который подает свой сигнал на продажу и покупку и советник должен параллельно выполнять их. Открытых ордеров BUY не больше трех и SELL тоже трех. Все ордера должны закрываться только по stoploss и takeprofit, а не принудительно советником.

double MacdMain0= iMACD(NULL,0, period_fast, period_slow, period_signal,0,MODE_MAIN, PRICE_OPEN,0);
double MacdSignal0= iMACD(NULL,0, period_fast, period_slow, period_signal,0,MODE_SIGNAL, PRICE_OPEN,0)
double MacdMain1= iMACD(NULL,0, period_fast, period_slow, period_signal,0,MODE_MAIN, PRICE_OPEN,1)
double MacdSignal1= iMACD(NULL,0, period_fast, period_slow, period_signal,0,MODE_SIGNAL, PRICE_OPEN,1)
如果 (EMA0< WMA0&& EMA1>WMA1 && MacdMain0 >MacdSignal0&& MacdMain1 <MacdSignal1)

那么这将增加macd如muwings

 
这一切都很清楚,但我如何设置订单?例如,在原始版本中,我们设置了买入,而当收到卖出信号时,买入被关闭,卖出被设置!这时,我们就会发现,卖出被关闭。 我不需要关闭它们,专家顾问应该设置带有止损的订单,仅此而已!"。
 

我有一个问题,或者说是一个请求,关于同一个EAEMA_WMAmq4 ,也是关于关闭。是否可以通过 或者在此基础上增加通过MA的最大/最小值关闭订单的可能性 在我看来,这将是退出市场的最佳方式,(当然,我可能是错的)。请将这一功能添加到该EA中。

另一个小问题,我得到一个这样的消息:"错误。止损关闭",尽管我的止损设置为50点(MasterForex它是什么意思?