来自一个 "傻瓜 "的问题 - 页 239

 
forward666:

谢谢!如果你能给我任何提示,那就太好了。

我将阅读更多关于定型器 的信息。

试试吧。

bool first;

写。

bool first=true;
 
亲爱的先生们!请告诉 "傻瓜 "们如何(或者说在哪里)从市场上下载一个免费的专家顾问?我知道在哪里安装标准的Expert Advisors......我不能从市场上做,我应该使用什么应用程序?
 
Sokrat:

亲爱的先生们!请告诉 "傻瓜 "们如何(或者说在哪里)从市场上下载一个免费的专家顾问?我知道在哪里安装一个普通的EA......我不能从市场上做 - 我应该使用什么应用程序?
最简单的方法是在终端进行,工具箱有市场标签
 
Sokrat:

亲爱的先生们!请告诉 "傻瓜 "们如何(或者说在哪里)从市场上下载一个免费的专家顾问?我知道在哪里安装标准的Expert Advisors......我不能从市场上做,我应该使用什么应用程序?



 

forward666: У меня при запуске робота сразу открывается позиция,которая явно не отражает реалии графика,соответственно она уходит в глубокий минус. Как сделать,что при запуске робота эта позиция не открывалась сразу?где в коде нужно что-то добавить?

#include <Trade/Trade.mqh>
#include <Trade/SymbolInfo.mqh>
#include <Trade/PositionInfo.mqh>

CTrade Trade;
CSymbolInfo Sym;
CPositionInfo Pos;

input int Shift=10; /*Shift*/ // Величина скачка цены для открытия позиции
input int Limit=100; /*Limit*/ // Величина убытка в пунктах для закрытия позиции
input int Prof=10;
input int MA_Period=50; // Период Moving Average 
int maHandle; // хэндл индикатора Moving Average
double maVal[3]; // статический массив для хранения значений индикатора Moving Average
bool first;
double a,b,Lots;
//+------------------------------------------------------------------+
//| Expert initialization function |
//+------------------------------------------------------------------+
int OnInit()
  {
   maHandle=iMA(NULL,0,MA_Period,2,MODE_SMA,PRICE_CLOSE);
   if(maHandle<0)
     {
      Alert("Ошибка при создании индикаторов - номер ошибки: ",GetLastError(),"!!");
      return(-1);
     }
   first=false;
   if(!Sym.Name(_Symbol))
     {
      Alert("Ошибка инициализации CSymbolInfo, поворите попытку");
      return(-1);
     }
   Print("Инициализация эксперта выполнена");
   return(0);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
   IndicatorRelease(maHandle);
  }
//+------------------------------------------------------------------+
//| Expert tick function |
//+------------------------------------------------------------------+
void OnTick()
  {
   if(CopyBuffer(maHandle,0,0,3,maVal)<0)
     {
      Alert("Ошибка копирования буферов индикаторов - номер ошибки:",GetLastError());
      return;
     }
   if(!Sym.RefreshRates()) return;
   if(first)
     {
      a=Sym.Ask();
      b=Sym.Bid();
      first=false;
      return;
     }
   Lots=AccountInfoDouble(ACCOUNT_FREEMARGIN)*0.66/1000/SymbolInfoDouble(_Symbol,SYMBOL_TRADE_TICK_VALUE);
   Lots=MathMin(999,MathMax(1,Lots));
   Lots=NormalizeDouble(Lots,2);
   if(Pos.Select(_Symbol))
     {
      if(Pos.Profit()>2)
        {
         Trade.PositionClose(_Symbol,Sym.Spread()*2);
        }
      else
        {
         if(Pos.PositionType()==POSITION_TYPE_BUY)
           {
            if((Pos.PriceOpen()-Sym.Ask())/Sym.Point()>Limit)// || Sym.Bid()<maVal[0]-0.0005)
              {
               Trade.PositionClose(_Symbol,Sym.Spread()*2);

              }
           }
         else if(Pos.PositionType()==POSITION_TYPE_SELL)
           {
            if((Sym.Bid()-Pos.PriceOpen())/Sym.Point()>Limit)// || Sym.Ask()>maVal[0]+0.0005)
              {
               Trade.PositionClose(_Symbol,Sym.Spread()*2);

              }
           }
        }
     }
   else
     {
      if(b-Sym.Bid()>=Shift*Sym.Point() && maVal[0]>maVal[1] && maVal[1]>maVal[2] && Sym.Bid()<maVal[0])
        {
         Trade.SetDeviationInPoints(Sym.Spread()*2);
         Trade.PositionOpen(_Symbol,ORDER_TYPE_SELL,Lots,Sym.Bid(),0,0,""); //Sym.Bid()+0.0030
                                                                            // Trade.Sell(Lots,_Symbol,0,0,0,"");
         Print(__FUNCTION__,"():Sell");
        }
      if(Sym.Ask()-a>=Shift*Sym.Point() && maVal[0]<maVal[1] && maVal[1]<maVal[2] && Sym.Ask()>maVal[0])
        {
         Trade.SetDeviationInPoints(Sym.Spread()*2);
         Trade.PositionOpen(_Symbol,ORDER_TYPE_BUY,Lots,Sym.Ask(),0,0,""); //Sym.Ask()-0.0030
                                                                           // Trade.Buy(Lots,_Symbol,0,0,0,"");
         Print(__FUNCTION__,"():Buy");
        }
     }
   a=Sym.Ask();
   b=Sym.Bid();
  }

你在第一次打勾之前:first==false,而且变量a和b没有被初始化。这就是为什么在第一次打勾时,条件是

   if(first)
     {
      a=Sym.Ask();
      b=Sym.Bid();
      first=false;
      return;
     }

不起作用,变量a和b仍然没有被初始化。

如果在解决了这个问题后,该仓位仍将打开,请打印MA、ask、bid以及变量a和b的数组值。

 

你好。

我是一个真正的傻瓜,所以不要踢我)。

我的问题是:我怎样才能从Metatrader 5中提取报价数据?

我已经把报价单转换为excel文件,并把它带到我没有互联网接入的工作场所,用它来工作。

但在5metatrader中,我不知道如何将其文件转换为excel。你能告诉我吗?事实证明,我需要一个分步指导或脚本(我不懂编程语言,但我知道如何使用脚本、专家顾问或指标),可以在需要的时间段开始,即使是非标准的时间段(例如M3或M7)。我还想请你不要要求我开始学习编程语言,谢谢。

我只想永久切换到MT5,这样我就不必使用两个metatrader了。

真的希望得到你们的帮助,有识之士,将感激不尽的坟墓=)。

问候,阿列克谢。

 
Hronoptal:

...

在这里你会找到你需要的部分内容:如何为其他程序准备MetaTrader 5 的报价

如果你不想学习,你可以在 "工作"部分订购任何你想要的东西。))

 

非常感谢你,亲爱的Tol64,感谢你的提示。

至于学习,不幸的是,这仍然是一个缺乏时间的问题。

再次感谢。

真诚的,阿列克谢。

 
是否有可能让视觉指标测试显示2个或更多的指标,而不是只有1个?
 
paladin800:
是否有可能使2个或更多的指标在视觉指标测试中显示,而不是只有一个?
保存文件名为tester.tpl 的模板,并加入所有需要的指标,在可视化模式下启用测试。