[存档!]任何菜鸟问题,为了不使论坛变得混乱。专业人士,不要路过。没有你,哪里都不能去 - 4. - 页 13

 
alsu:
在专有的软件中,可能是MS VisualStudio,也有免费的,例如CodeBlocks,就相当不错。
谢谢,我想我将从VISUAL C++ 2010 EXPRESS和CodeBlocks开始。
 
rustein:

决定开始学习C、C++、C#,谁能推荐一个好的编译器和编辑器。

谢谢你。


被遗忘的人

珀尔(PERL)

 
freeDRIVER:


其他的事情都没有忘记。

珀尔(PERL)

谢谢,读了,有趣的项目
 

不幸的是,以上这些都没有帮助。

这个问题https://www.mql5.com/ru/forum/138609/page9#edit_form,仍然是有意义的。

请帮助我们!

 

例如,在4H图表上将显示5天内最小的蜡烛或柱子。

日或小时,要在指标的设置 中设置。 并像在指标Fractals中一样标记这个蜡烛箭头。

或者类似这样的事情。
 
Fox_RM:

不幸的是,以上这些都没有帮助。

这个问题https://www.mql5.com/ru/forum/138609/page9#edit_form,仍然是有意义的。

请帮助我们!

请再给我看一下你所做的修改后的代码
 
Fox_RM:

不幸的是,以上这些都没有帮助。

这个问题https://www.mql5.com/ru/forum/138609/page9#edit_form,仍然是有意义的。

请帮助我们!

你已经收到了很多建议。首先,在你的帖子中再放上原始代码(没有你建议的备注,或者说是修正),这个问题是不正确的。其次,你必须开发自己的算法来搜索错误。没有人想出比打印中间结果更好的办法(在MQL4内)。作者首先可以看到逻辑错误,因为他是唯一一个知道他所写的代码的逻辑的人。;)))
 

最新版本。

//+------------------------------------------------------------------+
//|                                              Ti&Pi_Exp.mq4       |
//|                                        Copyright © 2012, FOX.RM  |
//|                                             fox.rm@mail.ru       |
//+------------------------------------------------------------------+

#property copyright "Copyright © 2012, FOX.RM"
#property link      "fox.rm@mail.ru"

int start() {  
 
double MA1[],MA2[];
double delta,price,old_price,col_bar,sum_tick,sum_pip,TP_UP[20],TP_DN[20],TP_UPMin[20],TP_DNPl[20]; //---размерность массивов
int sum_pip_bay,sum_pip_sell,i=0,limit,k=0,old_sell=0,old_bay=0;
int count_plus,count_minus,raz,count;
datetime time_Bar; 

  ArrayResize(MA1,Bars);ArrayResize(MA2,Bars);

raz=20-Bars;                    //--- расчет по
count=Bars+raz;                 //--- последним 20 барам
for (i=0;i<count;i++)           //--- вроде так
{  
    price = Close[i]/Point;    
    delta = price-old_price;
          
    if(!time_Bar)time_Bar=Time[0];
    col_bar = iBarShift(NULL,0,time_Bar)-iBarShift(NULL,0,Time[i]);
    if (col_bar >= 1)
    
    {time_Bar=Time[i];sum_pip_bay=0;
    sum_pip_sell=0;sum_pip=0;
    old_bay=0;old_sell=0;sum_tick=0;
    count_plus=0;count_minus=0;}
     
     //---- Расчет UP
    if(delta>=0)
    {if(delta>100)delta=1;
    sum_pip_bay = delta + old_bay;   
    old_bay=sum_pip_bay;
    count_plus++;}  
    
     //---- Расчет Down
    if(delta<0)
    { sum_pip_sell = delta+old_sell;
     old_sell=sum_pip_sell;
    count_minus++;}
          
        sum_tick=count_plus+count_minus;
        sum_pip=sum_pip_bay+MathAbs(sum_pip_sell);
     
      //---
  
        if (MA1[i]>=0){TP_UP[i]=MA1[i];}else{TP_UPMin[i]=MA1[i];}
        if (MA2[i]<=0){TP_DN[i]=MA2[i];}else{TP_DNPl[i]=MA2[i];} 
             
//----
    old_price=price; 

//------
if(NewBar())
  { 
  
 MA1[i] = count_plus - sum_pip_bay;
 MA2[i] = count_minus - MathAbs(sum_pip_sell);
 
 //---- Условия на открытие сделки
 
 
 if (Sredn(TP_UP)>=1.5)OrderSend(Symbol(),OP_SELL,0.1,Bid,2,50,20);  //--- сделки только + Bid
 if (Sredn(TP_DN)>=1.5)OrderSend(Symbol(),OP_BUY,0.1,Ask,2,50,20);  //--- на новом баре + Ask
   }    
   }                
   return(0);
}

//---- Функции
double Sredn(double ArrSr[])
{
double a=1,c,step=1/20;
for (int i=0;i<20;i++)                         //--- тут привел в соответствие
{if (ArrSr[i]==0){a*=1;}else{a*=MathAbs(ArrSr[i]);}}
c=MathPow(a, step);
  return(c);
}
//-------------
bool NewBar()
{
   static datetime lastbar = 0;
   datetime curbar = Time[0];
   if(lastbar!=curbar)
   {
      lastbar=curbar;
      return (true);
   }
   else
   {
      return(false);
   }
}
 
Fox_RM:

最新版本。

double a=1,c,step=1/20;

1)步骤变量为零。要么输入0.05,要么划分为1./20

2) 之后,交易开始尝试打开,但

OrderSend(Symbol(),OP_SELL,0.1,Bid,2,50,20)

你应该设置止损和获利水平,而不是50和20(_absolute_)。


P.S. 我只看了不开放的基本时刻。当然,许多东西必须进行优化和补充。

 
Fox_RM:

最新的版本。

这个 "马扎主义 "是怎么回事。

raz=20-Bars;                    //--- расчет по
count=Bars+raz;                 //--- последним 20 барам

为什么不直接诚实地宣布。

count = 20;

而不是通过一次性声明它们的尺寸来折磨这些数组MA1[]和MA2[]。

double MA1[20],MA2[20];

就这样。

 if (Sredn(TP_UP)>=1.5)OrderSend(Symbol(),OP_SELL,0.1,Bid,2,50,20);  //--- сделки только + Bid
 if (Sredn(TP_DN)>=1.5)OrderSend(Symbol(),OP_BUY,0.1,Ask,2,50,20);  //--- на новом баре + Ask

你需要回到根部的...的知识。你将STOPP的大小以点为单位传递给交易订单,你需要传递LEVELS!!!。要在网上工作,就必须使水平(价格、SL和TP)正常化!!。

 if (Sredn(TP_UP)>=1.5)
OrderSend(Symbol(),OP_SELL,0.1,NormalizeDouble (Bid,Digits),2,NormalizeDouble (Ask+50*Point, Digits),NormalizeDouble(Ask-20*Point,Digits), 0, MAGIC);  //--- сделки только + Bid
 if (Sredn(TP_DN)>=1.5)
OrderSend(Symbol(),OP_BUY,0.1,NormalizeDouble(Ask,Digits),2,NormalizeDouble(Bid-50*Point,Digits),NormalizeDouble(Bid+20*Point,Digits), 0, MAGIC);  //--- на новом баре + Ask

还有一件事:从一开始就把自己当成一个 "大人"--分配你的订单MAGIC!!!。你将来会需要它的!!!。