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

 
TheXpert писал(а)>>

图特。你引用的表达方式绝对是值得的。

谢谢!

 
大家好)。我有Grebenshchikov的交易系统。它在通道内和通道突破时发挥作用,通过挂单 出平仓进场。我想在历史上测试它,并用它来更新MM。也许有人已经在代码中实现了这个系统?哪些要素可用于建立这样的系统? 以下是对系统的描述http://www.fx4u.ru/rinki-forex-commodities-cfd-futures-f14/strategii-opitnih-f4/ts-grebenschikova-si-forex-i-mi-t529.html
 

我有一个问题

你可以做一个周期转换器来显示四个主要货币对的平均图 ...

考虑到美元兑日元的价格,比如说101.50,把它翻译成1.0150的状态,然后用它来建立一个平均图表......

是的,而且在测试和优化中使用这种媒介图会很好......

感谢你的聆听...

 

你好,所有的人和事

下面是代码(只有启动功能)。

//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start()
  {
//----
    // Узнаем уровень стопов и спрэд
    int Spread = MarketInfo(Symbol(), MODE_SPREAD);
    int StopLevel = MarketInfo(Symbol(), MODE_STOPLEVEL);

    // Рассчитываем значения средних на 0-ом и 1-ом барах
    double MAF_0 = iMA(NULL, 0, MAFP, 0, 1, 1, 0);
    double MAF_1 = iMA(NULL, 0, MAFP, 0, 1, 1, 1);
    double MAS_0 = iMA(NULL, 0, MASP, 0, 1, 1, 0);
    double MAS_1 = iMA(NULL, 0, MASP, 0, 1, 1, 1);
    
   // ----открытие позиции Buy покупка-----
    if( MAF_0 > MAF_1 && MAS_0 > MAS_1) { //-условие на покупку--- 
    if( isCloseLastPosByTake( NULL, OP_SELL, MagicNumber) ==true) {
     if( CheckOrders(OP_SELL))                                      {
       if( StopLoss <= StopLevel+ Spread)
         double SL = 0;        else         SL = Ask - StopLoss*Point;
       if( TakeProfit <= StopLevel- Spread)
         double TP = 0;        else         TP = Ask + TakeProfit*Point;
       if(!OrderSend(Symbol(), OP_BUY, Lots, Ask, 5, SL, TP, NULL, MagicNumber))
         Print("Не открыт ордер Buy. Ошибка №", GetLastError()); 
                }
               }
              }
   //-------------------Конец блока покупки ------------------
    
  //  ----- Открытие позиции Sell продажа------------  
    if( MAF_0 < MAF_1 && MAS_0 < MAS_1) { //-условие на продажу---
    if( CheckOrders(OP_BUY))                                     {
      if( StopLoss <= StopLevel+ Spread)
         SL = 0;        else         SL = Bid + StopLoss*Point;
       if( TakeProfit <= StopLevel- Spread)
         TP = 0;        else         TP = Bid - TakeProfit*Point;
       if(!OrderSend(Symbol(), OP_SELL, Lots, Bid, 5, SL, TP, NULL, MagicNumber))
         Print("Не открыт ордер Sell. Ошибка №", GetLastError()); 
                 }
                }
   //-------------------конец блока продажи -------------------
     
   return(0);
  }//+----------КОНЕЦ ФУНКЦИИ СТАРТ -------------------+

//ЖЖЖЖЖЖЖ Другие вызываемые пользовательские функции ЖЖЖЖЖЖ
//+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,  http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+
//|  Версия   : 19.05.2008                                                     |
//|  Описание : Возвращает флаг закрытия                                       |
//|  последней позиции по тейку.                                               |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    sy - наименование инструмента   (""   - любой символ,                   |
//|                                     NULL - текущий символ)                 |
//|    op - операция                   (-1   - любая позиция)                  |
//|    mn - MagicNumber                (-1   - любой магик)                    |
//+----------------------------------------------------------------------------+
bool isCloseLastPosByTake(string sy="", int op=-1, int mn=-1) {
  datetime t;
  double   ocp, otp;
  int      dg, i, j=-1, k=OrdersHistoryTotal();

  if ( sy=="0") sy=Symbol();
  for ( i=0; i< k; i++) {
    if (OrderSelect( i, SELECT_BY_POS, MODE_HISTORY)) {
      if (OrderSymbol()== sy || sy=="") {
        if (OrderType()==OP_BUY || OrderType()==OP_SELL) {
          if ( op<0 || OrderType()== op) {
            if ( mn<0 || OrderMagicNumber()== mn) {
              if ( t<OrderCloseTime()) {
                t=OrderCloseTime();
                j= i;
              }} }}}}}

  if (OrderSelect( j, SELECT_BY_POS, MODE_HISTORY)) {
    dg=MarketInfo( sy, MODE_DIGITS);
    if ( dg==0) if (StringFind(OrderSymbol(), "JPY")<0) dg=4; else dg=2;
    ocp=NormalizeDouble(OrderClosePrice(), dg);
    otp=NormalizeDouble(OrderTakeProfit(), dg);
    if ( ocp== otp) return( True);
  }
  return( False);
}
 

在这里,有一个条件算是得到了落实,正如rid所建议的那样。有他的评论和更正。

专家顾问本身的编译,交易.......,这不是真的.......。

我试着在测试器中只放了一个长线,也只放了一个短线。

逻辑很简单,当买入条件得到满足时,EA进行交易,交易在获利时关闭。

然后顾问等待着下一个交易条件的到来。 只是这个条件应与前一个条件相反。

Т.也就是说,如果交易的对象是BAY,那么下一个交易对象应该是SHELL。

 

还有。在这个主题中,只是更早的时候,提出了一个与我类似的问题。这是关于旗帜。这就是为什么所有这些大惊小怪的事情发生了。

 

另一个问题。

打开2个窗口,第一个5分钟,第二个15分钟。

在这两个地方绘制MAK(10)。如果我们在5分钟图上画一个MA(30),它对应于15分钟图上的一个MA(10),这是否正确?

对于15和30的图表,系数将是2。

对于30小时和1小时的图表,系数为2。

对于1h和4h的图表,其系数将是4。

这是真的还是假的????????????

 

igrok2008 писал(а) >>

这是真的还是假的????????????

严格说来,不是。但非常接近于此。

 

你好。

这是我第一次在论坛上写作。但愿不是最后一次。与论坛上人们所写的相比,我是个新手。大约半年前,我从Sergei Korolev的 "MQL4编程教材 "中学习了一个月左右的语言。

大约半年前,我用谢尔盖-科瓦廖夫的《MQL4编程教科书 学习了一个月左右。我已经写了几个专家顾问,并一直在使用它们。我写了一些专家顾问,自定义指标

...自定义指标、脚本。我一直试图在论坛上找到所有我不明白的问题的答案。然而,我一直在纠结于一个看似微小的细节,找不到答案。

请帮助我。

这个问题是关于#include <XXX.mqh>的使用,我重新阅读了整个论坛,但找不到答案。在其中一个主题上说:

"......我还可以补充一点,eX4文件是自给自足的--为了让它工作,
,不需要包括自定义函数的源代码。
你可以复制ex4文件,将其发送给其他交易者并在那里使用。
它是完整的,不管是什么技术都能得到。"

这就是问题所在。当传递EA时,它没有 "看到 "该函数,但在编译时写入 - 无法打开程序文件。

尽管在 另一个终端的include中,ex4中出现了一个未编译的条目

你能否解释一下这个错误。谢谢。

 
gvi2504 >> :

...当传递EA时,它没有 "看到 "该函数,但在编译时写道 - 无法打开程序文件。

虽然在 另一个终端的include出现了一个ex4中没有编译的条目

你能否解释一下这个错误。谢谢你。

请给我一个例子,有完整的日志。该库在EA中是如何被调用的,库本身的标题是什么。也许就是这样。

顺便说一下,TheXpert在这里的某个地方跑来跑去,他很擅长这个东西。

原因: