ryan_jones_sm





//+------------------------------------------------------------------+
//|                                                ryan_jones_sm.mq4 |
//|                                         Copyright © 2007, Sergan |
//|                                                                  |
//+------------------------------------------------------------------+
// Âåðñèÿ 1.0 03.11.07
// ïðàâèëà:
/* Ìåòîä, êîòîðûé äàåò ýòè öèôðû, óäèâèòåëüíî ïðîñò. Ïðàâèëà òàêîâû:
Ïîêóïêà:
1.	Ñðåäíåå ïî çàêðûòèþ, ðàññ÷èòàííîå ïî "X"- äíåâíîìó ïåðèîäó, äîëæíî áûòü âûøå, ÷åì àíàëîãè÷íîå ñðåäíåå "Y" äíåé òîìó íàçàä.
2.	Öåíà ïðè çàêðûòèè äîëæíà áûòü ìåíüøå, ÷åì àíàëîãè÷íàÿ öåíà "Y" äíåé òîìó íàçàä.
3.	Öåíà ïðè çàêðûòèè äîëæíà áûòü âûøå, ÷åì öåíà íà çàêðûòèå "Y+X" äíåé òîìó íàçàä.
Åñëè ñîáëþäåíû âñå òðè óñëîâèÿ, òî íóæíî îñóùåñòâëÿòü ïîêóïêó ïðè îòêðûòèè íà ñëåäóþùèé äåíü

Ïðîäàæà:
1.	Ñðåäíåå ïî çàêðûòèþ, ðàññ÷èòàííîå ïî "X"- äíåâíîìó ïåðèîäó äîëæíî áûòü ìåíüøå, ÷åì àíàëîãè÷íîå ñðåäíåå "Y" äíåé òîìó íàçàä.
2.	Öåíà ïðè çàêðûòèè äîëæíà áûòü áîëüøå, ÷åì àíàëîãè÷íàÿ öåíà "Ó äíåé òîìó íàçàä.
3.	Öåíà ïðè çàêðûòèè äîëæíà áûòü ìåíüøå, ÷åì öåíà íà çàêðûòèå "Y+X" äíåé òîìó íàçàä.

Íàïðèìåð, åñëè "Õ"= 20 è "Y"=3
*/
#define LOW 0
#define HIGH 1
#define OP_NONE -1  //òèï îðäåðà - íåò îðäåðà OP_BUY, OP_SELL è ò.ï. èñïîëüçóþòñÿ èç ìò
#define OP_CLOSEORDER -2 //òèï ñèãíàëà - çàêðûòü îðäåð
#define UP 1
#define DOWN -1
//----
#define MAGICMA  031107
#include <stdlib.mqh>
#include <WinUser32.mqh>
//----
#property copyright "Copyright © 2007, Sergan"
#property link      "SerganMT@hotbox.ru"
//----
#property indicator_chart_window
#property indicator_buffers 7
#property indicator_color1 Red
#property indicator_color2 Gold
#property indicator_color3 DarkBlue
#property indicator_color4 Black
#property indicator_color5 Blue
#property indicator_color6 Blue
//----
#property indicator_width1 2
#property indicator_width2 2
#property indicator_width3 1
#property indicator_width4 1
#property indicator_width5 3
#property indicator_width6 3
//---- input parameters
extern int       ParY=3;  //ïàðàìåòð "Y"
extern int       ParX=20; // ïàðàìåòð "X"
//---- buffers
double ExtMapBuffer1[];  // ìà ïåðèîä ïàðàìåòð "X"
double ExtMapBuffer2[];  // ìà ïåðèîä  "X" ñìåùåíèå "Y"
double ExtMapBuffer3[];  //öåíà çàêðûòèÿ "Y" äíåé íàçàä
double ExtMapBuffer4[];  //öåíà çàêðûòèÿ "Y+X" äíåé òîìó íàçàä
//----
double BuyBuffer[];     //áóôåð ñèãíàëû áàé
double SellBuffer[];    //áóÿåð ñèãíàëû ñåëë
double BufferSignalType[]; // áóôåð òèïîâ ñèãíàëîâ, íåîáõîäèìî äëÿ ïåðåäà÷è â ñîâåòíèê
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
//---- indicators
   SetIndexStyle(0,DRAW_LINE);
   SetIndexBuffer(0,ExtMapBuffer1);
   SetIndexLabel(0, "ma("+ParX+")" );
   SetIndexStyle(1,DRAW_LINE);
   SetIndexBuffer(1,ExtMapBuffer2);
   SetIndexLabel(1, "ma("+ParX+","+ParY+")" );
   //----
   SetIndexStyle(2,DRAW_LINE);
   SetIndexBuffer(2,ExtMapBuffer3);
   SetIndexLabel(2, "close("+ParY+")" );
   //----
   SetIndexStyle(3,DRAW_LINE);
   SetIndexBuffer(3,ExtMapBuffer4);
   SetIndexLabel(3, "close("+(ParY+ParX)+")" );
   //----
   SetIndexStyle( 4, DRAW_ARROW, EMPTY );
   SetIndexArrow( 4, 233 );
   SetIndexStyle( 5, DRAW_ARROW, EMPTY );
   SetIndexArrow( 5, 234 );
   //----
   SetIndexBuffer( 4, BuyBuffer   );
   SetIndexEmptyValue(4,0);
   SetIndexBuffer( 5, SellBuffer   );
   SetIndexEmptyValue(5,0);
   ArrayInitialize(BuyBuffer, 0 );
   ArrayInitialize(SellBuffer, 0 );
//----
   int drawtype=DRAW_ARROW ;
   SetIndexBuffer(6,BufferSignalType );
   SetIndexStyle( 6, DRAW_NONE);
   SetIndexEmptyValue(6,0);
   //----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function                       |
//+------------------------------------------------------------------+
int deinit()
  {
//----
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
  bool ShowSignals(int i  )
  {
   BuyBuffer[i]=0; SellBuffer[i]=0; BufferSignalType[i]=OP_NONE;
   int cmd=OP_NONE;
   if(i>Bars-100)return(false);
/*
double ExtMapBuffer1[];  // ìà ïåðèîä ïàðàìåòð "X"
double ExtMapBuffer2[];  // ìà ïåðèîä  "X" ñìåùåíèå "Y"
double ExtMapBuffer3[];  //öåíà çàêðûòèÿ "Y" äíåé íàçàä
double ExtMapBuffer4[];  //öåíà çàêðûòèÿ "Y+X" äíåé òîìó íàçàä

Ïðîäàæà:
1.	Ñðåäíåå ïî çàêðûòèþ, ðàññ÷èòàííîå ïî "X"- äíåâíîìó ïåðèîäó äîëæíî áûòü ìåíüøå, ÷åì àíàëîãè÷íîå ñðåäíåå "Y" äíåé òîìó íàçàä.
2.	Öåíà ïðè çàêðûòèè äîëæíà áûòü áîëüøå, ÷åì àíàëîãè÷íàÿ öåíà "Ó äíåé òîìó íàçàä.
3.	Öåíà ïðè çàêðûòèè äîëæíà áûòü ìåíüøå, ÷åì öåíà íà çàêðûòèå "Y+X" äíåé òîìó íàçàä.

Ïîêóïêà:
1.	Ñðåäíåå ïî çàêðûòèþ, ðàññ÷èòàííîå ïî "X"- äíåâíîìó ïåðèîäó, äîëæíî áûòü âûøå, ÷åì àíàëîãè÷íîå ñðåäíåå "Y" äíåé òîìó íàçàä.
2.	Öåíà ïðè çàêðûòèè äîëæíà áûòü ìåíüøå, ÷åì àíàëîãè÷íàÿ öåíà "Y" äíåé òîìó íàçàä.
3.	Öåíà ïðè çàêðûòèè äîëæíà áûòü âûøå, ÷åì öåíà íà çàêðûòèå "Y+X" äíåé òîìó íàçàä.
Åñëè ñîáëþäåíû âñå òðè óñëîâèÿ, òî íóæíî îñóùåñòâëÿòü ïîêóïêó ïðè îòêðûòèè íà ñëåäóþùèé äåíü
*/
     if(ExtMapBuffer1[i]<ExtMapBuffer2[i])
     {
        if(Close[i]>ExtMapBuffer3[i] && Close[i] <  ExtMapBuffer4[i])
        {
         cmd=OP_SELL;
         SellBuffer[i]= Close[i];
        }
     }
     if(ExtMapBuffer1[i]>ExtMapBuffer2[i])
     {
        if(Close[i]<ExtMapBuffer3[i] && Close[i] >  ExtMapBuffer4[i])
        {
         cmd=OP_BUY;
         BuyBuffer[i]= Close[i];
        }
     }
   BufferSignalType[i]=cmd;
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
  int start()
  {
   int    counted_bars=IndicatorCounted();
   int limit=Bars-counted_bars-1;
   //int oldertimeframe = getoldertimeframe();
     for( int i=limit; i>0; i -- )
     {
      ExtMapBuffer1[i]=iMA(NULL,0,ParX,0,MODE_SMA,PRICE_CLOSE,i);
      ExtMapBuffer2[i]=iMA(NULL,0,ParX,ParY,MODE_SMA,PRICE_CLOSE,i);
      ExtMapBuffer3[i]=Close[ParY+i]; //öåíà çàêðûòèÿ Y äíåé íàçàä
      ExtMapBuffer4[i]=Close[ParY+ParX+i];//öåíà çàêðûòèÿ "Y+X" äíåé òîìó íàçàä
      ShowSignals(i);
     }
   return(0);
  }
//+------------------------------------------------------------------+



Sample





Analysis



Market Information Used:

Series array that contains close prices for each bar


Indicator Curves created:

Implements a curve of type DRAW_LINE

Implements a curve of type DRAW_ARROW
Implements a curve of type DRAW_NONE

Indicators Used:

Moving average indicator


Custom Indicators Used:

Order Management characteristics:

Other Features: