新人对MQL4和MQL5的任何问题,对算法和代码的帮助和讨论 - 页 1438

 

请告诉我们在优化EA 时如何最好地进行。

有许多参数负责指标的设置,有一个参数可以启用/禁用这个指标。


如果它被禁用,那么优化指标设置就完全没有意义。

问题:我怎样才能减少这种无意义的过冲?

 
ANDREY:

谢谢你的帮助和为我提供的新信息。但我突然发现,我想出了一个更简单的方法....
1.当 在一个分钟烛台上开出 第一笔订单时,我在X变量中存储了开出这第一笔订单时该烛台的低点。
2.当一个零烛台打开时(在订单打开的烛台之后的下一个烛台),我得到LoY[1]
。然后我转动逻辑,得出结论
1.如果X=LoY[1],那么订单是在其打开的烛台的LoY 之后打开的
2.如果LoY[1]< X,这意味着价格在订单打开后又下跌了一次,并且低于X。这意味着订单在LoY[]在给定的蜡烛图上 形成之前打开
Time LOW我只需要知道订单打开的时间。在LoY[]形成之前或之后。
而一分钟蜡烛上的所有订单都是一个高于另一个的开放,相差2点。也就是说,当第一根蜡烛打开时,这根蜡烛上的其他蜡烛也打开了。
谢谢你的帮助。

但我还有一个问题。
我在一个一分钟的蜡烛图上以X价格开了一个订单。几秒钟后,在同一个蜡烛图上,另一个订单以X+2点的价格被打开。在X和X+2这两个点之间,有一个价格低点。
我需要找出低点。如果我们处理不同的蜡烛图,我会使用iLow和iLowest
函数,但这些函数必须指定条形作为区间界限。但我的区间界线不是条形,而是X和X+2 的价格,因为只有一个条形。
我知道如何找到我需要的最低限度。但要做到这一点,我需要跟踪每一个刻度的价格值。我也知道如何在X+2 的时候用一个周期来做,以及如何iLow和iLowest 那样在X+2 的时候一次性 做。
如果你能教我怎么做,我将非常感激。
谢谢

将刻度线写到一个文件中
 
MakarFX:
将刻度线写到一个文件中

谢谢你提供的信息,这对我来说是新的。我从来没有把蜱虫写到文件里。我在哪里可以读到更多关于它的信息以了解如何去做?

?另一个问题 ..... 我可以把带有价格的刻度线写在一个数组中,用刻度线对数组进行排序,并获得具有最小价格值的刻度线?或借助于

阵列最小值


谢谢你的帮助。

 
ANDREY:

谢谢你提供的信息,这对我来说是新的。我从来没有把蜱虫写到文件里。我在哪里可以读到更多关于它的信息以了解如何去做?

?另一个问题 ..... 我可以把带有价格的刻度线写在一个数组中,用刻度线对数组进行排序,并获得具有最小价格值的刻度线?或借助于

阵列最小值


谢谢你的帮助。

写入文件 FileWriteString

一般来说,很难理解你需要什么。

 
MakarFX:

文件写入字符串

很难知道你要找的是什么。

在一分钟的蜡烛图上以X价格开了一个订单。几秒钟后,在同一个蜡烛图上,另一个订单在X+2处打开。在X和X+2之间,有一个价格低点。
我需要找出低点。如 果我们处理不同的蜡烛图,我会使用iLow和iLowest
函数,但这些函数必须指定条形作为区间界限。但我的区间界线不是条形,而是X 和X+2的价格,因为只有一个条形。
我知道如何找到我需要的最低限度。但要做到这一点,我需要跟踪每一个刻度的价格值。我也知道如何在X+2 时候用一个周期来做。以及如何像iLow和iLowest的情况那样 X+2 的时候一次做完(一次和一次)
如果你能教我怎么做,我将非常感激。
谢谢
 
ANDREY:

谢谢你提供的信息,这对我来说是新的。我从来没有把蜱虫写到文件里。我在哪里可以读到更多关于它的信息以了解如何去做?

?另一个问题 ..... 我可以把带有价格的刻度线写在一个数组中,用刻度线对数组进行排序,并获得具有最小价格值的刻度线?或借助于

阵列最小值


谢谢你的帮助。

这是有可能的。只需要通过函数写入.bin文件即可。

uint  FileWriteArray( 
   int          file_handle,         // handle файла 
   const void&  array[],             // массив 
   int          start=0,             // начальный индекс в массиве 
   int          count=WHOLE_ARRAY    // количество элементов 
   );

并阅读

uint  FileReadArray( 
   int    file_handle,               // handle файла 
   void&  array[],                   // массив для записи 
   int    start=0,                   // стартовая позиция для записи в массив 
   int    count=WHOLE_ARRAY          // сколько читать 
   );
 
Alexey Viktorov:

你可以。你只需用函数向.bin文件写入

并阅读

谢谢你提供给我的新信息 ....而不仅仅是新....oooooooo新?:=)我将尝试自己学习它....

 
ANDREY:

谢谢你为我提供的新信息 ....而不仅仅是新....非常新?:=)我将尝试自己消化它....。

这里有什么新鲜事?你打开文档,阅读标题,找到 "文件操作 "部分,其中给出了不同函数的描述,包括 FileWriteArray( )。

这不是我第一次提醒你,你应该更经常地阅读文档。即使你目前不需要它。通过阅读章节标题,你将了解文件中所描述的内容。你是最需要它的人。

 
Alexey Viktorov:

这里有什么新鲜事?打开文档,阅读标题,找到 "文件操作 "部分,其中描述了各种函数,包括 FileWriteArray( )。

这不是我第一次提醒你,你应该更经常地阅读文档。即使目前你没有什么需要。通过阅读章节标题,你将了解文件中所描述的内容。你才是需要它的人。

谢谢你的宝贵意见。目前,我只有在写代码的时候,遇到不知道答案的问题时,才会阅读文档。我在写以前的代码时从未遇到过需要将数据写入文件的情况,所以这对我来说是一个完全陌生的话题。
告诉我,难道我的想法不能以更简单的方式实现吗,不需要把它写进文件?如我的代码。这不是一个工作代码,而是为了说明我的想法,即如何在一分钟烛台上找到两个相邻订单之间的最小值
,感谢您的帮助。

double P[60],Z;
int Tick,x,x1,G,G1,G2,T;

void OnTick()
{
Tick++;

if (OrdersTotal()==1&&Tick<2189)
{
P[x]=Bid;
Print("------------------------P[x]=Bid------------------------=", DoubleToString(P[x],5), "  x ",  x);
x++;
}
if (OrdersTotal()==2&&Tick==2189)
{
x1=x;
x=0;
ArraySort(P,WHOLE_ARRAY,0,MODE_ASCEND);
T=(60-x1);
Print("------------------------МИНИМУМ=------------------------=",DoubleToString(P[T],5), "  Tick ",  Tick, "  x1 ",  x);
}

if (Tick==2176||Tick==2188)
{
OrderSend(Symbol(),OP_SELL,0.1,Bid, 3,Ask+300*Point,Ask-100*Point,"300",0);
G2=G;
G=Tick;
}
}

也就是说,我把每个tick的价格直接写进数组,而不是写进一个文件。

 
ANDREY:

谢谢你的帮助和为我提供的新信息。但我想到了一个更简单的方法,....。
1.当 在一个分钟烛台上开出 第一笔订单时,我在X变量中存储了开出这第一笔订单时该烛台的低点。
2.当一个零烛台打开时(在订单打开的烛台之后的下一个烛台),我得到LoY[1]
。然后我转动逻辑,得出结论
1.如果X=LoY[1],那么订单是在其打开的烛台的LoY 之后打开的
2.如果LoY[1]< X,这意味着价格在订单打开后又下跌了一次,并且低于X。这意味着订单是在给定的蜡烛图上的LoY[]
形成之前打开的。

你可以查看时间,但你在等待一个新的订单,然后询问最大或最小的刻度。

原因: