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

 
veti-k:
嗨,你能告诉我如何确定一个订单有多少点的利润吗?
如果你有一个 买入头寸,你必须从当前的买入价中减去开盘价。如果是卖出头寸,你应该从开盘价中减去当前的卖出价。
 
paladin80:
如果买入头寸,从当前买入价中减去开盘价。如果是卖出头寸,用开盘价减去当前的卖出价。

侦察员发现,OrderClosePrice()可以代替Bid或Ask使用。
 
谢谢你))。
 
亲爱的论坛用户,请告诉我如何将iCustom中的一个变量放入ArrayMaximum 中?
 
Alexandr24:
尊敬的论坛用户,请您告知如何将iCustom中的一个变量放入ArrayMaximum中?
为此,你需要阅读ArrayMaximum是什么。

int ArrayMaximum( double array[], int count=WHOLE_ARRAY, int start=0)

它搜索的是具有最大值的元素。该函数返回数组中最大元素的位置。

搜索是一个过程,而不是一个变量。也就是说,你可以给一个数组元素 分配一个指标值,然后用ArrayMaximum搜索数组中最大的元素。
 
granit77:
为此,你应该阅读什么是ArrayMaximum。 。

int ArrayMaximum( double array[], int count=WHOLE_ARRAY, int start=0)

搜索具有最大值的元素。该函数返回数组中最大元素的位置。

搜索是一个过程,而不是一个变量。也就是说,你可以给一个数组元素分配一个指标值,然后用ArrayMaximum搜索数组中的最大元素。
如何找到 昨天的指标最大值? 我找到了昨天一天的指标的第一个值和最大值,但我找不到昨天的最大值,ArrayMaximum开始在整个图表中搜索,或者可能是通过其他函数完成?
 

大家下午好,我坐在电脑前用头撞键盘--我无法修复代码中的一个错误......请帮助一个初学者。

这是我的猫头鹰代码。

外部双倍TakeProfit = 500。

外置双Lots = 0.1。

外部双倍止损=30。

外来的双倍TrailingStop = 30;

外部字符串 Indicator_1 = "SAR(SAR_STEP)"。

外部双SAR_Step = 0.02。

外部双SAR_MaxStep =0.2。

Extern double GeneralShift = 0; // 0 - 未关闭的酒吧,1 - 关闭。

// 这些是将会被

//显示在

// 专家顾问与图表的连接


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

//| |

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

int start()

{

双A。

int b;

int total, ticket, cnt;


//只是程序中使用的变量


如果(Bars<100)

{

Print("小于100的条形图")。

return(0);

}

// 该条件检查图表历史是否包含100个以上的蜡烛图,如果不包含,则返回错误。

//它将产生一个错误。需要提请大家注意的是

// 缺少信息


如果(TakeProfit<5)

{

Print("TakeProfit less than 5")。

return(0);

}

// 该条件检查TakeProfit水平(外部变量之一。

// 控制获利水平。它需要检查//你是否已经设置了止盈水平。

//检查你是否将获利水平设置在你的经纪公司不允许的水平。

// 不允许你的经纪公司。这只是为了在你的专家顾问失败时,你//清楚地知道错误是什么。

// 错误在哪里。我强烈建议设置它。


total=OrdersTotal()。

如果(total<1)

//需要进行这种检查,以避免同时打开几个相同的位置。如果不选中它,那么,例如,如果你的EA在随机指数处于超买区时被触发,那么它将在每一个刻度上进行交易,直到它用完所有的保证金。

// 因此,为了限制未平仓合约的数量,这

//限制器。如果它被设置了,那么顾问将不会打开超过一定的//数量的

//位置的数量 <x

{

// 没有发现未结订单

如果(AccountFreeMargin()<(1000*Lots))

{

Print("我们没有钱。Free Margin = ", AccountFreeMargin();

return(0);

}

// 又是一段辅助性的代码。如果账户中没有足够的钱,它

//打印出一个错误。如果专家顾问工作,这一块完全没有用处

// 实时的,但它在测试历史上非常有用。


如果(iSAR(NULL,0,SAR_Step,SAR_MaxStep,GeneralShift)>Close[0]); // Open BUY

// 终于到了最有趣的部分。取代这些X,我们必须插入

// 触发购买的条件。


{

ticket=OrderSend(Symbol(,OP_BUY,Lots,Ask,3,Ask-Stoploss*Point, Ask+TakeProfit*Point, "comment",16384,0,Green);


// 这些是购买条件。原则上,这里没有什么可以改变的,但为了拓宽//我的视野,我扩大了范围。

// 我将破译它在这里所说的内容。这里说,我们必须购买

// (OP_BUY)当前的符号(货币对,该专家顾问已连接到该图表)。

//交易规模Lots(在开始时设置的变量)。市场价格,有

//滑移量为3,并且止损和止盈设置在

在//开始时,该交易将被标记为 "评论",并确定数字为0,在

// 在购买点,在图表上,会有一个绿色的滑块,上面有确定的代码

// 16384


如果(ticket>0)

{

如果(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES))Print("BUY订单打开:",OrderOpenPrice())。

}

else Print("错误打开BUY订单:",GetLastError())。

return(0);

}


// 这个块只需要用来记录是否一切顺利。

// 或者,以其他方式,记录一个导致某事失败的错误。


//现在卖出赌注的情况也是如此。而不是YYYYYY - 条件

如果(iSAR(NULL,0,SAR_Step,SAR_MaxStep,GeneralShift)<Close[0])

{

ticket=OrderSend(Symbol(,OP_SELL,Lots,Bid,3,Bid+Stoploss*Point,Bid-TakeProfit*Point, "macd sample",16384,0,Red);

如果(ticket>0)

{

如果(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES))Print("Sell order opened : " ,OrderOpenPrice());

}

else Print("错误打开卖出订单:",GetLastError())。

return(0);

}

return(0);

}


// 现在退出。这里也没有什么变化,只是RRRRRRRR - 条件

//通过 "买入 "关闭交易,ZZZZZZZ - 通过 "卖出 "关闭交易。


for(cnt=0;cnt

// 所有开放的职位都是通过以下方式搜索的

{

OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES)。

如果(OrderType()<=OP_SELL && // 检查已开仓的头寸

OrderSymbol()==Symbol()) //检查符号

{

如果(OrderType()==OP_BUY) // 多头头寸被打开。

{

//应该关闭吗?

if(iSAR(NULL,0,SAR_Step,SAR_MaxStep,GeneralShift)<Close[0]) //close BUY.

{

OrderClose(OrderTicket(),OrderLots(),Bid,3,Violet); // 关闭头寸

return(0); // 退出

}

// 检查拖曳式止损

如果(TrailingStop>0)

{

如果(Bid-OrderOpenPrice()>Point*TrailingStop)

{

如果(OrderStopLoss()<Bid-Point*TrailingStop)

{

OrderModify(OrderTicket(),OrderOpenPrice(),Bid-Point*TrailingStop,OrderTakeProfit(),0,Green) 。

return(0);

}

}

}

}

否则 // 与空头头寸相同

{

//应该关闭吗?

如果(iSAR(NULL,0,SAR_Step,SAR_MaxStep,GeneralShift)>Close[0])//Close Sell

{

OrderClose(OrderTicket(),OrderLots(),Ask,3,Violet); // 关闭位置

return(0); // 退出

}

// 检查拖曳式止损

如果(TrailingStop>0)

{

如果((OrderOpenPrice()-Ask)>(Point*TrailingStop))

{

如果((OrderStopLoss()>(Ask+Point*TrailingStop)) ||(OrderStopLoss()==0))

{

OrderModify(OrderTicket(),OrderOpenPrice(),Ask+Point*TrailingStop,OrderTakeProfit(),0,Red) 。

return(0);

}

}

}

}

}

}

}

return(0);

//--------

}

//--------,结束。

 

新兴的汽车交易商不能抓住一个错误!!请帮助我!!!!!!!!!!!!!!!!!!

'}'- 不平衡的括号 C:\Program Files (x86)\Forex4you MetaTrader 4\experts\Saurentios V101.mq4 (167, 1)

 
我希望我在格式化这样的代码 时没有撞到我的头。我会修复它的 :)
 

你已经重复了几次错误。

你放一个if条件,然后在它的括号里写一些东西,然后在最后的括号后面放一个分号。 像这样。

if(iSAR(NULL,0,SAR_Step,SAR_MaxStep,GeneralShift)>Close[0]); 

这是不对的。这一点是正确的。

if(iSAR(NULL,0,SAR_Step,SAR_MaxStep,GeneralShift)>Close[0]){

}