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 );//ордер открыть
if ((NormalizeDouble (Bid-massiv[S],Digits) <=0))
//если разница между значением массива возвращенным на последнем тике и ценой последнего тика отрицательная или = 0.00000
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.
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.00000if ((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 );//ордер открыт
}
你好。你能告诉我,如果一个EA同时连接到几个货币对窗口,那么一个窗口的EA的变化会影响到另一个窗口的EA吗?"即本地变量是否变化?
如果你为同一个EA改变魔力,那么EA将分别在自己的窗口中工作。
我真的需要帮助,重新设计我的EA!!
我对其中的一切都很满意,只是希望我可以....。如果你不能将一笔交易转化为盈亏平衡或以获利收盘,那么在不改变交易策略的情况下,在新的开仓信号的反面将其关闭。例如,如果卖出交易掉头了,而Owls没有将其转移到盈亏平衡点,他就开始一根新的蜡烛,打开一个卖出交易,成交量越来越大,希望有一个回撤,我希望他继续工作,就像他在止损/ 止盈时关闭交易一样。如果价格反转,它就打开买入,并关闭那个,尽管有一个大的减去....。像这样
/*反编译后删除*/
你好。如果一个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); }
如果代码是这样构建的,那么当重启终端时,变量会在重启的瞬间留下之前的值,还是会被重置到程序开始时声明的状态?再次感谢!
不,它们不会相互影响。同样的仓位魔法,只有在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);}
如果(macd_2>0&&macd_1<0) {line_1=GlobalVariableSet(false);}
如果代码是这样构建的,那么当重启终端时,变量会在重启的瞬间留下之前的值,还是会被重置到程序开始时声明的状态?再次感谢!
首先,阅读关于GlobalVariableSet() 的内容--你缺少参数,而且使用不当。
操作顺序如下:当你要保存的变量的值发生变化时,这个值将通过这个函数传递给终端的适当的全局变量。而在init()中重新初始化EA时,你通过GlobalVariableGet() 函数将其值传递给变量。
先生们,请给我一个提示!
我正试图实现一个简单的想法,在程序的注释中描述了这个想法。
程序在测试仪中打开的订单,其价格与代码中指定的价格不一致。
例如,订单以0.86084的价格开仓,而数组中最接近的数值是0.85375。
差额是正数,而代码规定,如果差额<0.00000,即为负数,则开立订单。
请告知我们错误的位置。
谢谢你。
先生们,请给我一个提示!
我正试图实现一个简单的想法,在程序的注释中描述了这个想法。
程序在测试器中打开的订单与代码中指定的价格不一致。
例如,订单以0.86084的价格开仓,数组中最接近的数值为0.85375。
差额是正数,而代码规定,如果差额<0.00000,即为负数,则开立订单。
请告知我们错误的位置。
谢谢你。
找出错误 的最好方法是 自下而上地浏览每一行,看看它与你想得到的东西和所写的东西是如何对应的。
这个条件的前提是,...- 这就是你的目的吗?(1-1000000 <= 0) - 满足?我给了你一个解决方案,而你却 "视而不见"......。
找出错误的方法:从下往上看每一行,意识到你想要的东西和写的东西之间的对应关系。
这个条件是假设...- 这就是你的目的吗?(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个不重复 的出价值,以随机顺序进行)。
我将非常感谢您的帮助和提示--我已经困惑了第二天.....,但都无济于事。
非常感谢。我甚至复制了你的那个提示....,我只是没有完全理解它.....,对不起,我的愚蠢....。我将绞尽脑汁,试图弄清楚。
我只是不明白为什么你把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个不重复 的出价值,以随机顺序进行)。
我将非常感谢您的帮助和提示--我已经在.....,但没有任何效果。
为了了解发生了什么,我需要把计算结果交给打印机。
并对结果进行分析。