我如何从火鸡中获取数据? - 页 6

 
Retabs:


我会纠正自己的错误。已经通过SRC按钮 插入了代码。

如果像你写的那样,我的代码是按照规则插入的,那么你为什么要删除我的代码


因为你必须根据规则提供你的代码粘贴,而不是我你的!刚才回到家就把它删了!
 
borilunad:

因为你必须根据规则提供你的代码粘贴,而不是我你的!刚才回到家就把它删了!


请您提供建议。如何允许新的 交易只在指标线 重新交叉 时开仓,即在val1不等于val2之后?(上面的代码)。通过循环?

 
Retabs:


请告知。如何限制一笔交易的开仓,直到另一笔交易结束?(上面的代码)。


在开盘前,要提出一个条件,如果没有头寸,就可以开盘!如果没有头寸,就可以开盘。

有许多不同的功能,但在你探索它们的时候,我建议有一个备用的功能,是适用于所有的场合的!这是我的建议。

if(OrderTotal() == 0)
{
  // потом остальные условия, чтобы зря не производить расчёты,
  // если пока ещё есть открытая позиция. 
  // Если понадобится открывать больше позиций, тогда проставите
  // допустимый максимум, например, 3 позиции:
if(OrderTotal() < 3)
{
  // Всё это не ленитесь находить в Документации! Замечено, что 
  // если находите сами и сами делаете, тогда ваши знания и навыки
  // будут крепкими!
  
 
<br / translate="no">
Borilunad

因为你必须根据规则提供你的代码粘贴,而不是我你的!刚才回到家就把它删了!

谢谢你。 重新审视了我的条件,意识到我没有完全弄清楚我想要什么。我很抱歉。

能否请你告诉我。我如何允许 指标线 重新交叉 ,即在val1不等于val2之后开立 新的 交易 ?(上面的代码)。只允许在2个交叉点之间进行一次交易,而不考虑当时开出的过去交易的数量,当然也不碰它们。

我试着添加一个新的变量作为标记,在穿越过程中改变其值,但没有任何效果。

我认为唯一的出路是抓住交易完成的时机,把标记改回原来的价值。

 
Retabs:


请告知。如何只允许在指标线 重新交叉 时,即在val1不等于val2之后开立新的 交易?(上面的代码)。通过一个循环?


当我在给你写信的时候,你添加了你想看到我写的条件!在这里,你必须自己寻找和写出你所需要的东西,在文件中寻找,看你的时间序列图,条形 烛光,并深入研究谢尔盖-科瓦廖夫的教程,它以一种易懂的方式解释了一切

所以,不要浪费你的时间,拿起学习,结果会是这样的!如果你使用提示,你将对自己不利,因为即使是专业编写的EA,也总是需要一个保姆,没有这个保姆,它随时都会变得暴躁,并会因为市场习惯的频繁变化而停止赚钱!这就是为什么你应该一直寻找新的解决方案,进行实验,或多或少地改变策略,知道自己做了什么要比理解别人的容易得多祝您好运!

 
borilunad:


当我在给你写信的时候,你添加了你想看到我写的条件!这时,你必须自己寻找和写出你所需要的东西,在文档中寻找,看你的时间序列图、柱状图- 烛光图,并深入研究谢尔盖-科瓦廖夫的教程,他以通俗易懂的方式解释一切

因此,不要浪费你的时间,从事教学工作,你会得到结果的!而在提示上,你会对自己造成伤害,因为即使是专业编写的EA,也总是需要一个保姆,没有这个保姆,它随时会变得暴躁,并会因为市场习惯的频繁变化而停止挣钱!这就是为什么你应该一直寻找新的解决方案,进行实验,或多或少地改变策略,知道自己做了什么要比理解别人的容易得多祝您好运!


好的。我不会放弃这个参考。你能告诉我,为了"抓住交易发生的那一刻,把标记改回原来的价值",应该往哪个方向挖
 
Retabs:

好的。我不会放弃这个证书。告诉我应该从哪个方向挖掘,"抓住交易发生的那一刻,把标记改回原来的价值"


时间序列 在文档中,图表上的 条形图- 幻灯片!而且你会在这一过程中学习到很多非常有用和有用的东西!还有教程!

而且这不是一天或两天的学习,是几个月和几年的学习,如果你真的想知道并知道如何去做,那就是一辈子的事了!好运!

 
_new-rena:

最后。

130的误差是由于停止和接管造成的。应该有一个价格水平,在这个水平上它们应该被触发。(当然不是等待-100或60的价格率,应该是像Price-100*Point或Price+60*Point,比如说)


请告知。 如何 允许 指标线 重新 交叉开立 新的 交易 ,即在val1不等于val2之后?只允许在2个交叉点之间进行一次交易,而不取决于在那一刻之前打开的交易数量,当然也不允许碰它们。

//+------------------------------------------------------------------+
//|                                Sovetnik_RegressionPolynomial.mq4 |
//|                                                      Retabs 2014 |
//|                                                        www.----- |
//+------------------------------------------------------------------+
#property copyright "Retabs 2014"
#property link      "www.-----"
#property version   "1.00"
#property strict
//--- input parameters
input int   StopLoss=60;
input int   TakeProfit=100;
input double   Lots=0.10;
input int   Shift=5;

double SL;
double TP;
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---
   
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---
   
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
//---
   double val1=iCustom(NULL,0,"RegressionPolynomial",10000,55,5,2,0,0,0);
   double val2=iCustom(NULL,0,"RegressionPolynomial",10000,55,5,2,0,1,0);
   
   if(val1>val2)
   OrderSend(Symbol(),OP_BUY, Lots,Ask,Shift,Ask-StopLoss*Point,Ask+TakeProfit*Point,"коммент",5371533,0,Red);
   
   if(val1<val2)
   OrderSend(Symbol(),OP_SELL,Lots,Bid,Shift,Bid+StopLoss*Point,Bid-TakeProfit*Point,"коммент",5371533,0,Blue);
  }
//+------------------------------------------------------------------+
 
Retabs:


请告知。 如何 在指标线 再次 交叉时,即在val1不等于val2之后,允许打开 新的 交易 ?因此,在2个交叉点之间只允许有一笔交易,而不考虑在那一刻之前打开的交易数量,当然也不能碰它们。

像这样
void OnTick()
  {
//---
   double val10=iCustom(NULL,0,"RegressionPolynomial",10000,55,5,2,0,0,0);
   double val20=iCustom(NULL,0,"RegressionPolynomial",10000,55,5,2,0,1,0);

   double val11=iCustom(NULL,0,"RegressionPolynomial",10000,55,5,2,0,0,1);
   double val21=iCustom(NULL,0,"RegressionPolynomial",10000,55,5,2,0,1,1);
   
   if(val11 < val21 && val10>=val20)
   OrderSend(Symbol(),OP_BUY, Lots,Ask,Shift,Ask-StopLoss*Point,Ask+TakeProfit*Point,"коммент",5371533,0,Red);
   
   if(val11 > val21 && val10<=val20)
   OrderSend(Symbol(),OP_SELL,Lots,Bid,Shift,Bid+StopLoss*Point,Bid-TakeProfit*Point,"коммент",5371533,0,Blue);
  }
 

谢谢你的答复。刚才,我自己也想出了解决办法,但原则不同。试过我的和你的,似乎都是正确的。

//+------------------------------------------------------------------+
//|                                Sovetnik_RegressionPolynomial.mq4 |
//|                                                      Retabs 2014 |
//|                                                        www.----- |
//+------------------------------------------------------------------+
#property copyright "Retabs 2014"
#property link      "www.-----"
#property version   "1.00"
#property strict
//--- input parameters
input int   StopLoss=100;
input int   TakeProfit=160;
input double   Lots=0.10;
input int   Shift=5;

double SL;
double TP;
int    X=0;
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---
   
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---
   
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
//---
   double val1=iCustom(NULL,0,"RegressionPolynomial",10000,55,5,2,0,0,0);
   double val2=iCustom(NULL,0,"RegressionPolynomial",10000,55,5,2,0,1,0);
   

   if (X>0 && val1==val2)
   Ctrl=0;
   
   
    if (X==0  )
      {
      if(val1>val2)
      OrderSend(Symbol(),OP_BUY, Lots,Ask,Shift,Ask-StopLoss*Point,Ask+TakeProfit*Point,"коммент",5371533,0,Red);
      Ctrl=Ctrl+1;
      }
      
    if (X==0 ) 
    
      {if(val1<val2)
      OrderSend(Symbol(),OP_SELL,Lots,Bid,Shift,Bid+StopLoss*Point,Bid-TakeProfit*Point,"коммент",5371533,0,Blue);
      X=X+1;
      }
   
  }
//+------------------------------------------------------------------+

但问题是:在视觉上的交叉点,线条实际上不止一次交叉,因此信号被多次接收,专家顾问有时间下4-30个订单。

我们必须摆脱这一弊端。我唯一发明的是对以前的读数进行平均,并与现在的读数进行比较。从逻辑上讲,是的。但我怎样才能以编程方式做到这一点呢?帮助!