[存档]任何菜鸟问题,为了不使论坛变得杂乱无章。专业人士,不要与它擦肩而过。没有你,哪里都不能去 - 5. - 页 234

 
deyron:
你好。你能告诉我,如果一个EA同时连接到几个货币对窗口,那么一个窗口的EA的变化会影响到另一个窗口的EA吗?"即本地变量是否变化?


如果你为同一个EA改变魔力,那么EA将分别在自己的窗口中工作。

 

我真的需要帮助,重新设计我的EA!!

我对其中的一切都很满意,只是希望我可以....。如果你不能将一笔交易转化为盈亏平衡或以获利收盘,那么在不改变交易策略的情况下,在新的开仓信号的反面将其关闭。例如,如果卖出交易掉头了,而Owls没有将其转移到盈亏平衡点,他就开始一根新的蜡烛,打开一个卖出交易,成交量越来越大,希望有一个回撤,我希望他继续工作,就像他在止损/ 止盈时关闭交易一样。如果价格反转,它就打开买入,并关闭那个,尽管有一个大的减去....。像这样

/*反编译后删除*/

 
deyron:
你好。如果一个EA连接到几个货币对窗口,那么一个窗口的EA的变化会影响到另一个窗口的EA吗?即本地变量是否变化?
不,它们不会相互影响。同样的仓位魔法只有在EA仅通过魔法确定仓位关闭 时才会产生危害。
 

大家好。请帮助我理解全局变量。 问题是这样的:我有一个变量 bool line_1=false。 它变成了 确实如此。 当达到一个价格和使水平达到这将是其他的行动和 bool line_1 又变成了 假的。 我需要重新启动系统,否则参数在星期五晚上将无法达到,这个变量的值会丢失,并会影响交易的结果,据我所知,我需要把它们变成全局的bool变量。我还没有做任何事情,我需要你的建议,如果我认为要对代码进行修正,请告诉我是否需要做什么,谢谢。

bool line_1=GlobalVariableGet(false)。

if(macd_2<0&&macd_1>0) {line_1=GlobalVariableSet(true);}

if(macd_2>0&&macd_1<0) {line_1=GlobalVariableSet(false); }

如果代码是这样构建的,那么当重启终端时,变量会在重启的瞬间留下之前的值,还是会被重置到程序开始时声明的状态?再次感谢!

 
paladin80:
不,它们不会相互影响。同样的仓位魔法,只有在EA仅通过魔法确定仓位关闭时,才会产生不利影响。

是的,你当然可以用不同的方式过滤。例如,通过符号,等等。我说的是最简单的选择。
 
laveosa:

大家好。请帮助我理解全局变量。问题是这样的:我有一个变量 bool line_1=false。 它变成了 确实如此。 当达到一个价格和使水平达到这将是其他的行动和 bool line_1 又变成了 假的。 我需要重新启动系统,否则参数在星期五晚上将无法达到,这个变量的值会丢失,并会影响交易的结果,据我所知,我需要把它们变成全局的bool变量。我还没有做任何事情,我需要你的建议,如果我认为要对代码进行修正,请告诉我是否有什么需要修正,谢谢。

bool line_1=GlobalVariableGet(false)。

if(macd_2<0&&macd_1>0) {line_1=GlobalVariableSet(true);}

如果(macd_2>0&&macd_1<0) {line_1=GlobalVariableSet(false);}

如果代码是这样构建的,那么当重启终端时,变量会在重启的瞬间留下之前的值,还是会被重置到程序开始时声明的状态?再次感谢!

首先,阅读关于GlobalVariableSet() 的内容--你缺少参数,而且使用不当。

操作顺序如下:当你要保存的变量的值发生变化时,这个值将通过这个函数传递给终端的适当的全局变量。而在init()中重新初始化EA时,你通过GlobalVariableGet() 函数将其值传递给变量。

 

先生们,请给我一个提示!

我正试图实现一个简单的想法,在程序的注释中描述了这个想法。

程序在测试仪中打开的订单,其价格与代码中指定的价格不一致。

例如,订单以0.86084的价格开仓,而数组中最接近的数值是0.85375。

差额是正数,而代码规定,如果差额<0.00000,即为负数,则开立订单。


请告知我们错误的位置。

谢谢你。

int start()
{
 double Price=iOpen (Symbol (),0,0);        
 double SL=NormalizeDouble (Price-3000*Point, Digits);         
 double TP=NormalizeDouble (Price+100*Point, Digits);    
 #include <MASSIV.mqh> //объявление массива типа double (неповторяющиеся значения цены с пятью знаками после точки)
 double value =  Bid ;//параметру value функции ArrayBsearch присваивается значение  цены последнего тика

 int S = ArrayBsearch(  massiv,  value, WHOLE_ARRAY,  0, MODE_ASCEND);//функция возвращает индекс значения цены макс. близкой к цене последнего тика 
 if( (NormalizeDouble (Bid-massiv[S],Digits) <=0))//если разница между значением массива возвращенным на последнем тике и ценой последнего тика отрицательная или = 0.00000


{
                        
 OrderSend(Symbol(),OP_BUY,0.1,Ask,1,SL,TP,"jfh",123 );//ордер открыть
 
solnce600:

先生们,请给我一个提示!

我正试图实现一个简单的想法,在程序的注释中描述了这个想法。

程序在测试器中打开的订单与代码中指定的价格不一致。

例如,订单以0.86084的价格开仓,数组中最接近的数值为0.85375。

差额是正数,而代码规定,如果差额<0.00000,即为负数,则开立订单。

请告知我们错误的位置。

谢谢你。

找出错误 的最好方法 自下而上地浏览每一行,看看它与你想得到的东西和所写的东西是如何对应的。

if ((NormalizeDouble (Bid-massiv[S],Digits) <=0))
//если разница между значением массива возвращенным на последнем тике и ценой последнего тика отрицательная или = 0.00000
这个条件的前提是,...- 这就是你的目的吗?(1-1000000 <= 0) - 满足?

我给了你一个解决方案,而你却 "视而不见"......。

 
TarasBY:

找出错误的方法:从下往上看每一行,意识到你想要的东西和写的东西之间的对应关系。

这个条件是假设...- 这就是你的目的吗?(1-1000000 <= 0) - 它满足吗?

我给了你一个解决方案,而你却 "视而不见"......。

非常感谢。我甚至为自己复制了你的提示....,我只是没有完全理解它.....,原谅我的愚蠢....。我将绞尽脑汁,试图弄清楚。

我只是不明白为什么你把Bid变量值(最后一个tick的价格)当作1。我想这是一个6位数的值,在第一个数字后有一个小数点...的价值,以及

请告诉我,我可能误解了什么。

我已经仔细研究了你的代码。

double ld_Delta = 10.* Point;
if (NormalizeDouble (MathAbs (Bid - Price), Digits) <= ld_Delta)//
and this price isopen priceof a new bar
{OrderSend(Symbol(),OP_BUY,0.1,Ask,3,SL,TP, "jfh",123); }//openorder.


但我不明白

-为什么你建议使用变量Price 而不是变量massiv[S] 它包含了上一个条形图的开盘价

我的想法是,开仓的必要条件之一是其开仓价与最接近最后一个tick的价格的数组值之一重合。

我的策略全文是这样的

如果同时满足2个条件,则开放订单

-最后一根蜡烛的开盘价

最接近数组值之一 的价格(数组值--大约2000个不重复 出价值,以随机顺序进行)。

我将非常感谢您的帮助和提示--我已经困惑了第二天.....,但都无济于事。


	          
 
solnce600:

非常感谢。我甚至复制了你的那个提示....,我只是没有完全理解它.....,对不起,我的愚蠢....。我将绞尽脑汁,试图弄清楚。

我只是不明白为什么你把Bid变量值(最后一个tick的价格)当作1。我想这是一个6位数的值,在第一个数字后有一个小数点...的价值,以及

请告诉我,我可能误解了什么。

我已经仔细研究了你的代码。

double ld_Delta = 10.* Point;
if (NormalizeDouble (MathAbs (Bid - Price), Digits) <= ld_Delta)//
and this price is open price of a new bar
{OrderSend(Symbol(),OP_BUY,0.1,Ask,3,SL,TP, "jfh",123); }//openorder.

但我不明白

-为什么你建议使用变量Price 而不是变量massiv[S] 它包含了上一个条形图的开盘价

我的想法是,开仓的必要条件之一是其开仓价与最接近最后一个tick的价格的数组值之一重合。

我的策略全文是这样的

如果同时满足2个条件,则开放订单

-最后一根蜡烛的开盘价

最接近数组值之一 的价格(数组值--大约2000个不重复 出价值,以随机顺序进行)。

我将非常感谢您的帮助和提示--我已经在.....,但没有任何效果。

为了了解发生了什么,我需要把计算结果交给打印机。

    //если разница между значением массива возвращенным на последнем тике 
    // и ценой последнего тика отрицательная или = 0.00000
    if ((NormalizeDouble (Bid-massiv[S], Digits) <= 0))
    {
        Print ("massiv[", S , "] = ", massiv[S], " | massiv[", S - 1, "] = ", massiv[S-1], " | massiv[", S + 1, "] = ", massiv[S+1], " | Bid = ", Bid);
        OrderSend(Symbol(),OP_BUY,0.1,Ask,1,SL,TP,"jfh",123 );//ордер открыт
    }
并对结果进行分析。