谁来为5WMZ写个剧本吧。 - 页 14

 
Profitabl:

这段代码在编译时有四个错误,也许有括号丢失?


像这样试试吧。

那么,NumberOfPositions和ClosePositions函数必须存在于代码中

extern double TakeProfit = 120;
extern double StopLoss = 120;
extern double Lots = 0.1;
int Magic = 1234567;
int ticket;

//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
int start()
{
if ( DayOfWeek()==4)//если сегодня четверг
   {
    if ( Hour() == 23) //если - 23 часа терминального времени
       {
        if ( NumberOfPositions(NULL,OP_BUY, Magic )==0 ) //если нет открытых бай-позиций
           { 
           //"если цена open 46 периода 30M четверга меньше цены open 46 периода 30M среды,"(с)
           //"а цена опен среды больше цены опен вторника" (с),
           //"да ещё цена опен вторника больше цены опен понедельника" (с),
           if ( Close[1]<= Open[24] && Close[23]>=Open[48] && Close[47]>=Open[72]) 
              {
               ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask+StopLoss*Point,3,0,Ask+TakeProfit*Point,"Name_Expert",16384,0,Green);
               if(ticket!=-1)
                  {Print("Error opening BUY order : ",GetLastError());
                   return(0);}
              }     

           }
           
        }
   }       

if ( DayOfWeek()==5 && Hour() == 23){//если сегодня пятница, 23-00
//закрываем
ClosePositions(NULL,OP_BUY, Magic); }

return(0);
}
// the end.

 

=================

没有4个错误。有4个未使用的功能。清除了它。

我再说一遍。检查tf=n1

extern int       Magic=5671;

extern double    lots = 0.1;
extern int       StopLoss=120;
extern int       TakeProfit=120;

extern string _________________ = "=== Прочие Параметры советника  ===";
extern int        Slippage        = 10; // Проскальзывание цены
extern string Name_Expert = "Обезьяна Чи-Чи-Чи продавала кирпичи";
extern bool   UseSound      = True;   // Использовать звуковой сигнал
color  clOpenBuy     = Blue;        // Цвет значка открытия покупки
color  clOpenSell    = Red;         // Цвет значка открытия продажи
 color  clCloseBuy    = Green;     // Цвет закрытия покупки
 color  clCloseSell   = Green;    // Цвет закрытия продажи
extern int    NumberOfTry   = 10;           // Количество попыток
 string SoundSuccess  = "ok.wav";          // Звук успеха
 string SoundError    = "timeout.wav";    // Звук ошибки

//----------------------------------
double SL,TP;
int ticket;
static int prevtime = 0;
int StopLevel;

//-- Подключаемые модули --

#include <stderror.mqh>
#include <stdlib.mqh>

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

int start()
  {
// задаем работу по ЦЕНАМ ОТКРЫТИЯ 
if (Time[0] == prevtime) return(0); //если появился новый бар
   prevtime = Time[0]; // начинаем работу

StopLevel = MarketInfo(Symbol(),MODE_STOPLEVEL); // вызываем разрешенный 
//минимаьный стоп-Уровень
//======================= открываем позиции =====================================
if ( DayOfWeek()==4){//если сегодня четверг
if ( Hour() == 23)  {//если - 23 часа терминального времени
if ( NumberOfPositions(NULL ,OP_BUY, Magic )==0 ) { //если  нет открытых бай-позиций 
//если цена open 46 периода 30M четверга меньше цены open 46 периода 30M среды,
//а цена опен среды больше цены опен вторника,
//да ещё цена опен вторника больше цены опен понедельника,
if ( Close[1]<= Open[24] && Close[23]>=Open[48] && Close[47]>=Open[72]) {
//покупаем 
      SL=0;TP=0;
      if(StopLoss>0 && StopLoss>StopLevel )    SL=Bid-Point*StopLoss;
      if(TakeProfit>0 && TakeProfit>StopLevel) TP=Bid+Point*TakeProfit;
      if(StopLoss  <StopLevel && StopLoss>0)   SL = Bid-Point*StopLevel; 
      if(TakeProfit<StopLevel && TakeProfit>0) TP = Bid+Point*StopLevel; 
   ticket=OrderSend(Symbol(),OP_BUY,lots,Ask,3,SL,TP,"Name_Expert",Magic,0,clOpenBuy );
   if(ticket < 0) {
            Print("Ошибка открытия ордера BUY #", GetLastError()); 
            Sleep(10000);  prevtime = Time[1];   return (0); 
                  } 
        }}}}
//================== конец блока открытия ==================================
 //================Закрытие позиций=====================================
if ( DayOfWeek()==5  && Hour() == 23){//если сегодня пятница, 23-00
//закрываем
 ClosePositions(NULL,OP_BUY, Magic); }            
                  
//================== Конец блока закрытия  =============================
  return(0);
  }
//ЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖ Конец функции int start() ЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖ 
 
 //ЖЖЖЖЖЖЖЖЖЖЖ ПОЛЬЗОВАТЕЛЬСКИК ФУНКЦИИ ЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖ

//|  Автор    : Ким Игорь В. aka KimIV,  http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+
//|  Версия   : 01.09.2005                                                     |
//|  Описание : Возвращает наименование торговой операции                      |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    op - идентификатор торговой операции                                    |
//+----------------------------------------------------------------------------+
string GetNameOP(int op) {
  switch (op) {
    case OP_BUY      : return("Buy");
    case OP_SELL     : return("Sell");
    case OP_BUYLIMIT : return("BuyLimit");
    case OP_SELLLIMIT: return("SellLimit");
    case OP_BUYSTOP  : return("BuyStop");
    case OP_SELLSTOP : return("SellStop");
    default          : return("Unknown Operation");
  }
}
//+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,  http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+
//|  Версия  : 19.02.2008                                                      |
//|  Описание: Закрытие одной предварительно выбранной позиции                 |
//+----------------------------------------------------------------------------+
void ClosePosBySelect() {
  bool   fc;
  color  clClose;
  double ll, pa, pb, pp;
  int    err, it;

  if (OrderType()==OP_BUY || OrderType()==OP_SELL) {
    for (it=1; it<=NumberOfTry; it++) {
      if (!IsTesting() && (!IsExpertEnabled() || IsStopped())) break;
      while (!IsTradeAllowed()) Sleep(5000);
      RefreshRates();
      pa=MarketInfo(OrderSymbol(), MODE_ASK);
      pb=MarketInfo(OrderSymbol(), MODE_BID);
      if (OrderType()==OP_BUY) {
        pp=pb; clClose=clCloseBuy;
      } else {
        pp=pa; clClose=clCloseSell;
      }
      ll=OrderLots();
      fc=OrderClose(OrderTicket(), ll, pp, Slippage, clClose);
      if (fc) {
        if (UseSound) PlaySound(SoundSuccess); break;
      } else {
        err=GetLastError();
        if (UseSound) PlaySound(SoundError);
        if (err==146) while (IsTradeContextBusy()) Sleep(1000*11);
        Print("Error(",err,") Close ",GetNameOP(OrderType())," ",
              ErrorDescription(err),", try ",it);
        Print(OrderTicket(),"  Ask=",pa,"  Bid=",pb,"  pp=",pp);
        Print("sy=",OrderSymbol(),"  ll=",ll,"  sl=",OrderStopLoss(),
              "  tp=",OrderTakeProfit(),"  mn=",OrderMagicNumber());
        Sleep(1000*5);
      }
    }
  } else Print("Некорректная торговая операция. Close ",GetNameOP(OrderType()));
}
//+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,  http://www.kimiv.ru/                   |
//+----------------------------------------------------------------------------+
//|  Версия   : 19.02.2008                                                     |
//|  Описание : Закрытие позиций по рыночной цене                              |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    sy - наименование инструмента   (""   - любой символ,                   |
//|                                     NULL - текущий символ)                 |
//|    op - операция                   (-1   - любая позиция)                  |
//|    mn - MagicNumber                (-1   - любой магик)                    |
//+----------------------------------------------------------------------------+
void ClosePositions(string sy="", int op=-1, int mn=-1) {
  int i, k=OrdersTotal();

  if (sy=="0") sy=Symbol();
  for (i=k-1; i>=0; i--) {
    if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
      if ((OrderSymbol()==sy || sy=="") && (op<0 || OrderType()==op)) {
        if (OrderType()==OP_BUY || OrderType()==OP_SELL) {
          if (mn<0 || OrderMagicNumber()==mn) ClosePosBySelect();
        } } } } }

//+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,  http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+
//|  Версия   : 19.02.2008                                                     |
//|  Описание : Возвращает количество позиций.                                 |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    sy - наименование инструмента   (""   - любой символ,                   |
//|                                     NULL - текущий символ)                 |
//|    op - операция                   (-1   - любая позиция)                  |
//|    mn - MagicNumber                (-1   - любой магик)                    |
//+----------------------------------------------------------------------------+
int NumberOfPositions(string sy="", int op=-1, int mn=-1) {
  int i, k=OrdersTotal(), kp=0;

  if (sy=="0") sy=Symbol();
  for (i=0; i<k; i++) {
    if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
      if (OrderSymbol()==sy || sy=="") {
        if (OrderType()==OP_BUY || OrderType()==OP_SELL) {
          if (op<0 || OrderType()==op) {
            if (mn<0 || OrderMagicNumber()==mn) kp++;
          }}}}}  return(kp);}

 
leonid553:

=================

没有4个错误。有4个未使用的功能。清除了它。

我再说一遍。对tf=n1进行检查。


你其实已经举了一个例子,你可以给我发WMR,把160卢布转给一个慈善组织。

我唯一不能做的是在周五23:00关闭卖出头寸,否则只有买入被关闭,而卖出被修改三四天,当然卖出也被关闭。

这个欧元和英镑的数据可以作为额外的条件来考虑,只是当预测不是不对称的B=BB或H=HH时,应该在相反的方向上买入,它可以提高结果。

但是,如果在同一时间,英镑和欧元的相同数据
欧元 欧元是 "周二下跌,周三下跌,周四下跌
英镑 "上升,星期三上升,星期二下降"。
然后打开不是 "卖出 "而是 "买入"。

说到盈利能力,如果你去掉不准确的预测,仅仅70次交易的6次周五预测就可以得到大约1500点。这可以在其余的日子里乘以五倍,并按部门的比例再增加两倍的地段--无论多少,都是收支平衡的。我给Leonid一张160欧元英镑瑞士法郎日元的预测表,免费参加问题,发送WMR ale2715@yandex.ru,在回信中会收到预测,写一个EA,你会赚到,但不要用它参加冠军赛,我也会把他挂到冠军赛上。

 
lasso:

这样试试吧。

那么,代码中应该有NumberOfPositions和ClosePositions函数。


谢谢你,我们现在先不谈这个问题。
 
Profitabl:

唯一不可行的是,卖出头寸在周五23:00也会被关闭,否则只有买入被关闭,而卖出被修改了三四天,当然还有s/l被关闭。

的确如此...)))

它应该是这样的

 //================Закрытие позиций=====================================
if ( DayOfWeek()==5  && Hour() == 23){//если сегодня пятница, 23-00
//закрываем
 ClosePositions(NULL,-1, Magic); }            
                  
//================== Конец блока закрытия  =============================
  return(0);
  }
//ЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖ Конец функции int start() ЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖ 
 

卖出头寸的开设根本不是代码的一部分。因为在最初的工作中,这是一个在法郎上建立买入头寸的问题。

//------------

是的,我需要改变一下关闭方式 - ClosePositions(NULL,-1, Magic)

 
leonid553:

没有四个错误。有四个未使用的功能。我把它清理干净了。

我再说一遍。对tf=n1的检查

仔细观察发现有以下细微差别。

1) 条件相互矛盾

//если цена open 46 периода 30M четверга меньше цены open 46 периода 30M среды,
//а цена опен среды больше цены опен вторника,
//да ещё цена опен вторника больше цены опен понедельника,
if ( Close[1]<= Open[24] && Close[23]>=Open[48] && Close[47]>=Open[72]) {
//покупаем 


2) 调用时间序列(Open[48] 类型)在对历史进行测试时并不十分正确,因为历史中很可能有空隙,因此获得的价格不是来自启动者所写的条形。


3) 结业条件。

 //================Закрытие позиций=====================================
if ( DayOfWeek()==5  && Hour() == 23){//если сегодня пятница, 23-00
//закрываем

这不是普遍现象,因为例如经纪公司有Al...,周五没有小时值等于23的条形图。


4)还有一些细微的差别,但它们对产生的平衡曲线的影响一点也不小....。))



请正确地忍受我。这个帖子绝不是对leonid553 的抱怨。(赞美leonid!!)


我的观点是。"唧唧歪歪,唧唧歪歪的剧本,在五分钟内 "当然是可能的。 但实践表明,简单的TOR并没有发生。

到处都需要检查所有参数的边界值,调试,设置 "错误陷阱 "等。

而为了最终得到一个像样的小产品,而不是一些 "剧本"--需要大量的时间,无论你怎么看都是如此...... 不幸的是。

 

顾问已经在进行真实的交易了,今天在23点开了前两笔交易,现在我想知道明天会怎么收盘。感谢大家的参与。

而在这个表格中,EA对周二的预测结果,标记为 "I",这些是最亮的信号,只在这些信号上交易--这是方法B,其总数在最右边一栏,所有的总数以点为单位。

例如,在我的周二瑞士法郎的专家顾问中,我只保留了BBB、BHN和BHN,并增加了按存款比例增加手数的可能性。 在测试中,10%的存款总额是180%,有55笔亏损的交易,而且是盈利的,但20%的买入是450%的利润。你从红糠中清理出谷物,教专家顾问在不对称货币对的预测相互矛盾的情况下改变标记为 "c "的信号,不减少增加的手数,同时交易所有四种货币,你就 "熟悉外汇主管 "了。只要解决了这三个问题,你就能得到这个EA,只是不要用它参加冠军赛,我的分析法荣耀了我的名字。

从08年1月27日开始,仅从160个预测中的3个预测中检查自己的450%,瑞士法郎在上半年。如果专家顾问只增加手数,甚至会保持830%,甚至会更多。

附加的文件:
450_2.rar  20 kb
 

无话可说...这就像一个圣杯。为什么你以前没有注意到呢?

 
lasso:

仔细观察可以发现以下细微差别。

......

请正确理解我的意思。这篇帖子不是对.......,而是抱怨。

我根本没有假装写对了代码。我在那里特别指出,我写的代码只是一个蓝图。

我还没有深入研究战术的所有微妙之处,只是泛泛而谈。但我已经认为,这种策略值得非常认真地关注。我主要处理季节性商品交易,这就是为什么我认为这里有前景。因为这本质上是同样的 "准季节性交易",但却是短期的,在时间上。

"趋势检查:
让我们以白银为例
从下午6点到7点的一小时蜡烛图在70%以上的情况下与接下来23小时的价格走势相吻合,顺便说一下,这对其他一些金属来说是典型的。而这发生在过去的50天、40天、30天、20天和10天。因此,在19点之后,我们向这个蜡烛....,下了一个命令。"(来自--BR论坛)。

此外,非常偶然的是,我--就在昨天(见上面的引文)--发现--正是用这种(嗯,几乎是 "一对一")的战术赢得了上个月在一个著名的DC BR的演示比赛。 奖金为5000美元。

而在这次9月比赛中进行期货交易的参赛者,从月初开始就用这种战术获得了1000多个利润点。(演示比赛的规则非常严格--参与者必须在论坛上描述他们进入时的每笔交易,每笔交易的风险(止损)不得超过-200美元,否则将被取消资格)。

所以,NorthAlec,--你可能是在徒劳地冷笑。