[存档]任何菜鸟问题,为了不使论坛变得杂乱无章。专业人士,不要路过。没有你就无处可去 - 3. - 页 176

 

你能告诉我如何正确比较当前价格或移动平均线 与趋势线吗?

预先感谢你。

    double maH_fast=iMA(NULL,fast_maH_timeframe,fast_maH_period,0,fast_maH_method,fast_maH_price,0);

    if (ObjectFind("Tr_S1")==-1)
     {
      Create_Tr_S("Tr_S1",White,timf2s,TF2S,timf1s,TF1S);
     }

    if(maH_fast>"Tr_S1")
     {...}
 
ikatsko:

你如何计算盈利的多头头寸数量,并分别计算盈利的空头头寸数量?

该策略如下:如果自EA开始以来(或更好的情况下--整个账户历史)盈利的多头头寸数量大于空头头寸数量,那么只允许开多头头寸。反之亦然。

如何计算这些交易是很清楚的,如果它们被专家顾问关闭:关闭-计数。但如果一个头寸被TP或SL平仓,那么......。?

也许有人有一个现成的函数代码?


int ProfitableOrdersOfLongs(){
   int i,Orders=0; 
   for(i=0;i<OrdersHistoryTotal();i++){
      if(!OrderSelect(i,SELECT_BY_POS,MODE_HISTORY))continue;
      if(OrderSymbol()!=Symbol())continue;
      if(OrderMagicNumber()!=Magic)continue;
      if(OrderType()==0)if(OrderProfit()>0) Orders++;              
    }  
return(Orders);} 
//====================================================================================================== 
int ProfitableOrdersOfShorts(){
   int i,Orders=0; 
   for(i=0;i<OrdersHistoryTotal();i++){
      if(!OrderSelect(i,SELECT_BY_POS,MODE_HISTORY))continue;
      if(OrderSymbol()!=Symbol())continue;
      if(OrderMagicNumber()!=Magic)continue;
      if(OrderType()=1)if(OrderProfit()>0) Orders++;              
    }  
return(Orders);} 
 
nemo811:

你能告诉我如何正确比较当前价格或移动平均线与趋势线吗?

预先感谢你。

趋势线有一个以时间价格为坐标的起点和一个以时间价格为坐标的终点。

你可以用相同坐标的直线方程,找到在所建段的这两个坐标之间的任何一点的价格水平,并将MAA的价格水平和所需条形的交叉点与这条直线进行比较......

你可以阅读--那里有关于这样一个例子的详细描述。

 
Roman.:

你采取最后一个关闭的订单,用OrderCloseTime()将其关闭时间与前一个关闭的订单进行比较,如果相同,你将其与前一个关闭的订单的关闭时间进行比较...。像这样,自然,这一切都在一个循环中--从最后一个关闭到第一个,你一个接一个,比较订单关闭的时间......另一件事--打印你事先知道的最后一个订单的关闭时间,比方说三个订单 它可能是不同的,即使你理解为 " 同时",即按照我的理解,订单在任何时间关闭,即。实际上,比如说,三个订单的关闭时间不可能是一样的--试着打印(),看看你的三个TIME订单的值--它们的OrderCloseTime()的特征值,也就是说,我们可能要引入关闭时间的概念,也就是说,当我们可能认为它们同时关闭时,几个订单的关闭时间偏离一些小值 。实验一下,从这里自己看。

谢谢你,它工作了,但现在它打开了一个多个订单

我是这样做的

OrderSelect(OrdersHistoryTotal()-1, SELECT_BY_POS, MODE_HISTORY);//выбрать последний ордер 
tik=OrderCloseTime();
for (int l=OrdersHistoryTotal(); l>=0; l--) 
{
OrderSelect(l, SELECT_BY_POS, MODE_HISTORY);
if (OrderType()==OP_BUY||OP_SELL)
 {
  if (OrderMagicNumber()==1)
   {
   if (OrderProfit()<0)
    {
     if (OrderClosePrice()!= OrderStopLoss())
     {
     if (tik<=OrderCloseTime())
     {
 
vik-777:

谢谢你,它起作用了,但现在有一个多个订单打开了

我是这样做的

问题解决了,谢谢大家。

OrderSelect(OrdersHistoryTotal()-1, SELECT_BY_POS, MODE_HISTORY);//выбрать последний ордер 
tik=OrderCloseTime();
for (int l=OrdersHistoryTotal(); l>=0; l--) 
{
OrderSelect(l, SELECT_BY_POS, MODE_HISTORY);
if (OrderType()==OP_BUY||OP_SELL)
 {
  if (OrderMagicNumber()==1)
   {
   if (OrderProfit()<0)
    {
     if (OrderClosePrice()!= OrderStopLoss())
     {
     if (tik<=OrderCloseTime())
     {
     a = OrdersHistoryTotal();
     if (a>w)
     {
     if (sarik>0)
      {   
      OrderSend(Symbol(),OP_BUY,Lot1,NormalizeDouble(Ask,4),1,Ask - SL1*Point,Ask + 10*Point,0,2);
      w++;
      }
 
nemo811:

你能告诉我如何正确比较当前价格或移动平均线与趋势线吗?

1. if(maH_fast>"Tr_S1") {...}--错误:maH_fast是一个实数,"Tr_S1"--字符串类型的值;
2. doubleObjectGetValueByShift( string name, int shift)
该函数计算并返回指定栏位的价格值(与当前栏位偏移)。使用基于第一和第二坐标的线性方程来计算价格值。适用于趋势线
参数:
name - 对象名称。
shift - 栏的数量。
例如:双价=ObjectGetValueByShift("MyTrendLine#123", 11)。
 
你好!我有这样的问题......假设iHighest 和iLowest可以用来找出某段时间内最高/最低值的条数,但我如何能找出某条数的st Dev指标的最大值?
 
double maxdev,mindev=1;
for(int i=0;i<counbar;i>0)
{
double val=iStdDev(NULL,0,10,0,MODE_EMA,PRICE_CLOSE,i);
if(mindev>val)mindev=val;
if(maxdev<val)maxdev=val;
}
Print("maxdev - ",maxdev," mindev - ",mindev);
像这样的地方。
 
7sintez:

我什么都看了,什么都做了......。它不会打开一个位置,就是这样!它可以正常关闭,但不能打开...我不知道该怎么做!也许有人会发现程序中的一个错误?




它能正确打开和关闭5分钟欧元兑美元的订单。有轻微的修改问题,经常试图用相同的值来修改,因此经常出错。
 

大家好。请为初学者提供帮助。

一句话。

1)期限为1天。

2)有一个OrderSend(...)开放订单。它有SL和TP。但作为止损的附加条件,我们必须将订单设置为从开仓到18小时内有效,然后以当前价格 关闭。

这意味着必须满足三个条件中的一个。

1. 触发了止损


2. 获利被触发


3.由于止损和止盈都没有被触发,所以在开仓18小时后以当时的价格平仓。

这里是如何设置这个时间条件的,嗯?


问题2:

如何正确写出事件应该发生的条件,如果(1天的时间)。

- 当前条形图的CLOSE大于前一个条形图的C,并且大于前一个条形图的C,并且前一个条形图的C也大于前一个条形图的C。


请不要生气。我之前坐在Rumus上,我在重建过程中...

原因: