[警告关闭!]任何新手问题,为了不给论坛添乱。专业人士,不要走过。没有你,哪里都不能去。 - 页 143

 

你去吧。

//+------------------------------------------------------------------+
extern string   _____= "Параметры Длинных позиций"; 
extern int     RSI_period  =20;
extern int     MA_period          =21;
extern int     TP=200;
extern int     SL=61;

extern string   ____= "Параметры Коротких позиций";
extern int     RSI_period_SELL  =20;          
extern int     MA_period_SELL          =21;
extern int     TP_=200;
extern int     SL_=61;

//------------------------------
extern string     ______= "Общие Параметры ";
extern double  Lot=0.1;
extern int     Slippage=3;
extern int    Low_lim=8;
extern int   Up_lim=8;

int ExpertBars;
int ticket;

//*********************************************************************
//+------------------------------------------------------------------+
//| expert initialization function                                   |
//+------------------------------------------------------------------+
int init()
  {
//----
ExpertBars = Bars;
//----
   return(0);
  }

下一步。





int start()
  {
bool isNewBar=false;
if ( ExpertBars !=Bars) { ExpertBars=Bars; isNewBar=true; }
if ( isNewBar) { //если есть новый бар
 
//===== Ищем возможность войти в рынок =========================================
if ( Long)                   {     //если "выключатель" включен
if (! ExpertOrder( MagicLong ))//если  нет открытых длинных позиций 
  {
 //------заполняем массив значениями RSI для длинных позиций --------
double RSI_array_buy[50];
int    j=0;
while ( j<50)
 {
RSI_array_buy[ j]= iRSI(NULL, 0, RSI_period, MODE_SMA, j);
j++;
 }
ArraySetAsSeries( RSI_array_buy,true);
double MA_low =iMAOnArray( RSI_array_buy,0, MA_period,1,MODE_SMA,0);
double RSI_0=iRSI(NULL, 0, RSI_period,MODE_SMA, 1);
double RSI_1=iRSI(NULL, 0, RSI_period,MODE_SMA, 2);   
//---------проверяем условие на покупку----------------------------
  if   (           ( RSI_1< MA_low)  &&
          ( RSI_0> MA_low)  )
   {
  ticket=OrderSend(Symbol(),0, Lot,Ask, Slippage,Bid- SL*Point,Ask+ TP*Point,NULL, MagicLong,0,CLR_NONE);
  if ( ticket<0) { Print("Ошибка открытия ордера BUY #", GetLastError()); return (0);   }          
   }
   }}
   //--------------------------------------------------------------
if ( Short)                   {     //если "выключатель" включен 
if (! ExpertOrder( MagicShort ))//если  нет открытых длинных позиций 
  {  
 // ---заполняем массив значениями рси  для коротких  позиций
double RSI_array_sell[50];
int    k=0;
while ( k<50)
 {
RSI_array_sell[ k]= iRSI(NULL, 0, RSI_period_SELL, MODE_SMA, k);
k++;
 }
ArraySetAsSeries( RSI_array_sell,true);
double MA_up =iMAOnArray( RSI_array_sell,0, MA_period_SELL ,1,MODE_SMA,0);
double RSI_0s=iRSI(NULL, 0, RSI_period_SELL,MODE_SMA, 1);
double RSI_1s=iRSI(NULL, 0, RSI_period_SELL,MODE_SMA,2);
    
//--------проверяем условие на продажу------------------------------
  if  (           ( RSI_1s > MA_up )  &&
          ( RSI_0s < MA_up )) 
   {       
  ticket=OrderSend(Symbol(),1, Lot,Bid, Slippage,Bid+ SL_*Point,Bid- TP_*Point,NULL, MagicShort,0,CLR_NONE);
  if ( ticket<0) { Print("Ошибка открытия ордера SELL #", GetLastError()); return (0);  }     
   } 
   }} 
 

谢谢你!

 
你好!试图以直方图的形式显示从低位和高位TF的信号,但出现了5个错误 "ExtMapBuffer2"-变量未定义",怎么了?.....Help,如果你不能!! 谢谢
附加的文件:
dinap_zzg.mq4  4 kb
 

先生们(同志们:))。

我试图以箭头形式实现一个MAMy指标(它在kodobase中)。

我正试图以箭头形式实现MAMy指标(它在kodobase中)。

箭头画在未形成的柱子上,如果到了形成的时候,条件发生了变化--箭头不会被删除,只有在重新启动指标时才能被删除。

我想让箭头只画在已成型的柱子上。如果你有时间--给我上一堂实践课--纠正这个混乱的代码......。

(很有可能你会发现一些多余的东西--对不起(要从头写一个指标--我的手不是从那里长出来的--虽然它们是金色的),我还是在使用别人的工件)。

提前感谢。

附加的文件:
 

非常感谢您!

这正是医生吩咐的!

因为从账户历史来看,在图表上。

它看起来不是很好。



 

请你告诉我,如果没有调试器,也许有一个按键等待和一个对话输出函数或类似的东西,mql如何模拟调试器(以变量的当前值一步一步地观察算法)?

 

我找到了打印 功能,但现在我有另一个问题:指标输出是如何工作的?

图表上有512条。理论上,代码应该在1-14条上打印起点和条数,然后在其他条上打印主线和条数,但由于某些原因,它只打印了一路的起点和295条。你能告诉我什么是错的吗?

#property indicator_chart_window
#property indicator_buffers 2
#property indicator_color1 Red
#property indicator_color2 Yellow

extern int Param=14;
extern double Razmah=0.9;

double VH[], VL[], Rang=0, z=0, z1=0, num=0, num1=0;
int init()
  {
   SetIndexBuffer(0, VH);
   SetIndexBuffer(1, VL);
   return(0);
  }
int start()
  {
   int i, counted_bars=IndicatorCounted();
   if ( counted_bars<= Param+1) 
   { 
      for( i=0; i<=Bars- counted_bars-1; i++)
      {
         VH[ i]=High[ i];
         VL[ i]=Low[ i];
         num++;
         Print("Start     ", num);
      }
      return(0);
   }
   
   i=-5;
   if( counted_bars> Param+1) i=Bars- counted_bars-1;
   while( i>=0)
     {
      num1++;
      Print("Main     ", num1 );
      VH[ i]=High[ i]*1.01;
      VL[ i]=Low[ i]*0.99;
      i--;
     }
   return(0);
  }
 
Andrej78 писал(а)>>

我找到了打印功能,但现在我有另一个问题:指标输出是如何工作的?

图表上有512条。理论上,代码应该在1-14条上打印开始和条数,然后在其他条上打印主条和条数,但由于某些原因,只有开始被打印到最后和295条。请告知问题出在哪里。

检查你的日志。

 
Vinin писал(а)>>

你需要在日志中查看

>> 你怎么看日志的?

 
你能不能帮我把它圈起来,它不工作了。焕然一新的外观就够了吗?提前感谢您的帮助。代码中的描述。
附加的文件:
proba9.mq4  3 kb