BETTER_YZGraphOnLine_W





//+------------------------------------------------------------------+
//|                                                                  |
//|                 Copyright © 1999-2006, MetaQuotes Software Corp. |
//|                                         http://www.metaquotes.ru |
//+------------------------------------------------------------------+
//
// Ñêðèïò ñîçäàí ïî ìîòèâàì ñêðèïòà Èãðÿ Êèìà  KimIV www.kimiv.ru
// 


#property copyright "YURAZ YZH"
#property link      "yzh@mail.ru"
#property show_inputs

//extern bool   DeleteOldObjects = True;      // Óäàëÿòü ñòàðûå îáúåêòû
extern string _P_Objects="---------- Ïàðàìåòðû îáúåêòîâ";
//extern int    TypeObjects      = 1;         // Òèï îáúåêòîâ (0-ïðÿìîóã. 1-ëèíèÿ)
extern color  clObjBuy        =Aqua;      // Öâåò ïðèáûëüíûõ ïîêóïîê
extern color  clObjBuyLoss    =Aqua; // Blue;      // Öâåò óáûòî÷íûõ ïîêóïîê
extern color  clObjSell       =Salmon;    // Öâåò ïðèáûëüíûõ ïðîäàæ
extern color  clObjSellLoss   =Salmon; // Red;       // Öâåò óáûòî÷íûõ ïðîäàæ
extern string _P_Arrows="---------- Ïàðàìåòðû óêàçàòåëåé";
//extern bool   ShowArrow        = True;      // Ïîêàçûâàòü óêàçàòåëè
extern int    KodArrowBuy     =2;       // Êîä óêàçàòåëÿ ïîêóïêè
extern int    OffSetArrowBuy  =0; // -20;       // Ñìåùåíèå óêàçàòåëÿ ïîêóïêè
extern color  clArrowBuy      =Blue;      // Öâåò óêàçàòåëÿ ïîêóïêè
extern int    KodArrowSell    =1;       // Êîä óêàçàòåëÿ ïðîäàæè
extern int    OffSetArrowSell =0; // 20;        // Ñìåùåíèå óêàçàòåëÿ ïðîäàæè
extern color  clArrowSell     =Red;       // Öâåò óêàçàòåëÿ ïðîäàæè
//extern string _P_Text = "---------- Ïàðàìåòðû òåêñòà";
extern bool   ShowTextBalance =True;      // Ïîêàçûâàòü òåêñò áàëàíñà
//extern int    OffSetText       = 100;       // Ñìåùåíèå òåêñòà
//extern int    SizeText         = 9;         // Ðàçìåð òåêñòà

//extern color  clTextProfit     = Green;     // Öâåò ñóììû ïðèáûëè
//extern color  clTextLoss       = Red;       // Öâåò ñóììû óáûòêà
//extern color  clTextBalans     = Green;     // Öâåò ñóììû áàëàíñà

extern int    KodArrowCloseBuy =3;
extern int    KodArrowCloseSell=3;



static int ALLPIP=0;
//------- Ãëîáàëüíûå ïåðåìåííûå --------------------------------------
int    frogBalance    =0;
string frogNameObjLine="LDeal";      // Íàèìåíîâàíèÿ îáúåêòîâ ËÈÍÈß
string frogNameObjRect="RDeal";      // Íàèìåíîâàíèÿ îáúåêòîâ ÏÐßÌÎÓÃÎËÜÍÈÊ

//-----
string SIGNAL;
string name;
int arrow_code;
int iBar;
datetime datetime_object;
int len;
int fW ;

//+------------------------------------------------------------------+
//| script program start function                                    |
//+------------------------------------------------------------------+
void start()
  {
   int iPos=0;

   datetime dattimeOpen;
   datetime dattimeClose;

   double OpenPrice;
   double ClosePrice;

   fW=FileOpen ("YZSIGNAL.DAT",FILE_BIN|FILE_WRITE);
   //   SIGNAL = "B|"+TimeToStr( TimeCurrent() ,TIME_DATE|TIME_MINUTES|TIME_SECONDS)+"\n" ;      

   //   FileWriteDouble( fW, StringLen(SIGNAL), 8 ); // çàïèøåì çàãîëîâîê

   iPos=0;
   while( true) // ïîñìîòðèì èñòîðèþ
     {
      if (OrderSelect( iPos , SELECT_BY_POS, MODE_HISTORY)==false )
         break;

      if(OrderType()==OP_BUY) // BUY
        {
         SIGNAL="B|"+OrderTicket()+"|"+OrderLots()+"|"+TimeToStr( OrderOpenTime() ,TIME_DATE|TIME_MINUTES|TIME_SECONDS)+"|"+TimeToStr( OrderCloseTime() ,TIME_DATE|TIME_MINUTES|TIME_SECONDS)+"|";
        }
      if(OrderType()==OP_SELL)// SELL
        {
         SIGNAL="S|"+OrderTicket()+"|"+OrderLots()+"|"+TimeToStr( OrderOpenTime() ,TIME_DATE|TIME_MINUTES|TIME_SECONDS)+"|"+TimeToStr( OrderCloseTime() ,TIME_DATE|TIME_MINUTES|TIME_SECONDS)+"|";
        }
      len=StringLen(SIGNAL);
      FileWriteString( fW, SIGNAL, len );

      if(OrderSymbol()==Symbol() )
        {
         // if ( StringSubstr ( OrderComment(), 0,3)  == "[0]"  )
         SetPropArrow(  OrderType(), OrderLots(), OrderTicket() , OrderOpenTime() ,OrderOpenPrice(),OrderStopLoss(),OrderTakeProfit(), OrderCloseTime() ,OrderClosePrice(), OrderComment()   );
        }
      iPos++;
     }

   iPos=0;
   while( true) // îòêðûòûå îðäåðà òîæå ïîñòàâèì
     {
      if (OrderSelect( iPos , SELECT_BY_POS, MODE_TRADES)==false )
         break;

      if(OrderSymbol()==Symbol() )
        {
         // if ( StringSubstr ( OrderComment(), 0,3)  == "[0]"  )
         SetPropArrow(  OrderType(),  OrderLots(), OrderTicket() , OrderOpenTime() ,OrderOpenPrice(),OrderStopLoss(),OrderTakeProfit(), 0 ,0 ,OrderComment() );
        }
      iPos++;
     }

   FileClose(fW);
  }

//+------------------------------------------------------------------+
//| Óñòàíîâêà ñâîéñòâ îáúåêòà ÓÊÀÇÀÒÅËÜ                              |
//| Ïàðàìåòðû:                                                       |
//|                                                                  |
//|   op - îïåðàöèÿ                                                  |
//|   or - íîìåð îðäåðà (îáúåêòà)                                    |
//|   dtopen - äàòà, âðåìÿ îòêðûòèÿ                                  |
//|   price pp - öåíà îòêðûòèÿ                                       |
//|   dtclose - äàòà âðåìÿ çàêðûòèÿ                                  |
//|   priceclose - öåíà çàêðûòèÿ                                     |
//+------------------------------------------------------------------+
void SetPropArrow( int  op, double Lots, int or,  datetime dtopen, double pOpen, double pSL,double pTP, datetime dtclose, double priceclose, string sComment)
  {
   string no="ADeal";
   string oc="Close";
   string osl="SL";
   string otp="TP";

   if (op==OP_BUY || op==OP_SELL )
     {

      if(op==OP_BUY )
        {
         no=OrderTicket()+"BUY"+no+" "+DoubleToStr((priceclose-pOpen)/Point,0)+" ";
        }
      if(op==OP_SELL )
        {
         no=OrderTicket()+"SEL"+no+" "+DoubleToStr ((pOpen-priceclose)/Point,0)+" ";
        }

      if(op==OP_BUY )
         oc=OrderTicket()+"BUY"+oc+" "+DoubleToStr ((priceclose-pOpen)/Point,0)+" ";
      if(op==OP_SELL )
         oc=OrderTicket()+"SEL"+oc+" "+DoubleToStr ((pOpen-priceclose)/Point,0)+" ";

      osl=OrderTicket()+osl+" "+DoubleToStr ((pSL)/Point,0);
      otp=OrderTicket()+otp+" "+DoubleToStr ((pSL)/Point,0);

      if (ObjectFind(osl) < 0)
        {
         if(( op==OP_BUY && pSL > pOpen && pSL==priceclose )
         ||
        (op==OP_SELL && pSL < pOpen && pSL==priceclose )
          )
           {
            ObjectCreate(osl, OBJ_ARROW, 0, 0,0);

            ObjectSet(osl, OBJPROP_PRICE1   , pSL) ;

            ObjectSet(osl, OBJPROP_COLOR    , clArrowBuy);

            ObjectSet(osl, OBJPROP_ARROWCODE, 34);

            if(dtclose==0 )
               ObjectSet(osl, OBJPROP_TIME1, dtopen );
            else
               ObjectSet(osl, OBJPROP_TIME1, dtclose );
           }

        }

      if (ObjectFind(no+or) < 0)
        {
         ObjectCreate(no+or, OBJ_ARROW, 0, 0,0);
        }

      ObjectSet(no+or, OBJPROP_TIME1, dtopen);

      if (priceclose!=0)
        {
         if (ObjectFind(oc+dtclose)<0)
            ObjectCreate(oc+dtclose, OBJ_ARROW, 0, 0,0);
         ObjectSet(oc+dtclose, OBJPROP_TIME1, dtclose);
         
         int PIP;
         if  (op==OP_BUY)
           PIP  = (priceclose - pOpen ) / Point;
         if  (op==OP_SELL)   
           PIP=  (pOpen - priceclose) / Point;
           
           
         ALLPIP =   ALLPIP + PIP;
         if (ObjectFind("ALLPIP") < 0 )
         {
              ObjectCreate( "ALLPIP",OBJ_LABEL,0,0,0,0,0,0);
              
                       ObjectSet("ALLPIP", OBJPROP_XDISTANCE,100);
         ObjectSet("ALLPIP", OBJPROP_YDISTANCE, 20 );
         ObjectSet("ALLPIP", OBJPROP_CORNER, 1);
              
         }
         ObjectSetText("ALLPIP",  DoubleToStr(ALLPIP,0) , 15 , "Arial", Aqua );
         
         ObjectCreate( oc+dtclose+PIP,OBJ_TEXT,0,0,0,0,0,0);
         ObjectSetText( oc+dtclose+PIP, DoubleToStr(PIP,0), 12 ,  "Times New Roman",  DarkBlue) ;
         ObjectSet(oc+dtclose+PIP, OBJPROP_TIME1, dtclose-5300);
         ObjectSet(oc+dtclose+PIP,OBJPROP_COLOR, DarkBlue);
         if  (op==OP_BUY)
            ObjectSet(oc+dtclose+PIP, OBJPROP_PRICE1   , priceclose+50*Point); 
         if  (op==OP_SELL) 
            ObjectSet(oc+dtclose+PIP, OBJPROP_PRICE1   , priceclose-50*Point); 
            
 /*           
         ObjectCreate( oc+dtclose+Lots,OBJ_TEXT,0,0,0,0,0,0);
         ObjectSetText( oc+dtclose+Lots, DoubleToStr(Lots,2), 9 ,  "Times New Roman",  Red) ;
         ObjectSet(oc+dtclose+Lots, OBJPROP_TIME1, dtclose-35000);
         ObjectSet(oc+dtclose+Lots,OBJPROP_COLOR, Red);
         if  (op==OP_BUY)
            ObjectSet(oc+dtclose+Lots, OBJPROP_PRICE1   , priceclose+50*Point); 
         if  (op==OP_SELL) 
            ObjectSet(oc+dtclose+Lots, OBJPROP_PRICE1   , priceclose-50*Point); 
                        
    */        
            
        }

      if (op==OP_BUY)
        {
         ObjectSet(no+or, OBJPROP_PRICE1   , pOpen+OffSetArrowBuy*Point);
         ObjectSet(no+or, OBJPROP_COLOR    , clArrowBuy);
         ObjectSet(no+or, OBJPROP_ARROWCODE, KodArrowBuy);
         

         if (priceclose!=0)
           {
            ObjectSet(oc+dtclose, OBJPROP_PRICE1   , priceclose);
            ObjectSet(oc+dtclose, OBJPROP_COLOR    , clArrowBuy);
            ObjectSet(oc+dtclose, OBJPROP_ARROWCODE, KodArrowCloseBuy);

            if(StringFind(sComment,"sl",0)!=-1  )
              {
               ObjectSet(oc+dtclose, OBJPROP_COLOR    , Red );
               ObjectSet(oc+dtclose, OBJPROP_ARROWCODE, 251 );
              }

          if(/*StringFind(sComment,"tp",0) != -1 ||*/  priceclose==pTP )
              {
               ObjectSet(oc+dtclose, OBJPROP_COLOR    , DarkBlue);
               ObjectSet(oc+dtclose, OBJPROP_ARROWCODE, 174 );
               
              }
            SetPropLines(   op, Lots,  or, dtopen , pOpen,   dtclose,  priceclose , 1, sComment);

           }
         else
           {
            ObjectSet(oc+Time[0], OBJPROP_PRICE1   , Bid);
            ObjectSet(oc+Time[0], OBJPROP_COLOR    , clArrowSell);
            ObjectSet(oc+Time[0], OBJPROP_ARROWCODE, KodArrowCloseSell);

            if(StringFind(sComment,"sl",0)!=-1  )
              {
               ObjectSet(oc+dtclose, OBJPROP_COLOR    , Red );
               ObjectSet(oc+dtclose, OBJPROP_ARROWCODE, 251 );
              }

          if(/* StringFind(sComment,"tp",0) != -1 || */ priceclose==pTP )
              {
               ObjectSet(oc+dtclose, OBJPROP_COLOR    , DarkBlue);
               ObjectSet(oc+dtclose, OBJPROP_ARROWCODE, 174 );
              }

            SetPropLines(   op, Lots,  or, dtopen , pOpen,   Time[0],  Bid, 0, sComment);
           }

        }

      if (op==OP_SELL)
        {
         ObjectSet(no+or, OBJPROP_PRICE1   , pOpen+OffSetArrowSell*Point);
         ObjectSet(no+or, OBJPROP_COLOR    , clArrowSell);
         ObjectSet(no+or, OBJPROP_ARROWCODE, KodArrowSell);

         if (priceclose!=0)
           {
            ObjectSet(oc+dtclose, OBJPROP_PRICE1   , priceclose);
            ObjectSet(oc+dtclose, OBJPROP_COLOR    , clArrowSell);
            ObjectSet(oc+dtclose, OBJPROP_ARROWCODE, KodArrowCloseSell);
          if (/* StringFind(sComment,"tp",0) != -1 ||  */priceclose==pTP )
              {
               ObjectSet(oc+dtclose, OBJPROP_COLOR    , DarkBlue);
               ObjectSet(oc+dtclose, OBJPROP_ARROWCODE, 174 );
              }
            SetPropLines(   op,  Lots,  or, dtopen , pOpen,   dtclose,  priceclose, 1, sComment);
           }
         else
           {
            ObjectSet(oc+Time[0], OBJPROP_PRICE1   , Ask);
            ObjectSet(oc+Time[0], OBJPROP_COLOR    , clArrowSell);
            ObjectSet(oc+Time[0], OBJPROP_ARROWCODE, KodArrowCloseSell);
          if(/* StringFind(sComment,"tp",0) != -1 || */ priceclose==pTP )
              {
               ObjectSet(oc+dtclose, OBJPROP_COLOR    , DarkBlue);
               ObjectSet(oc+dtclose, OBJPROP_ARROWCODE, 174 );
              }
            SetPropLines(   op,  Lots, or, dtopen , pOpen,   Time[0],  Ask, 0, sComment);
           }

        }
     }
  }

//+------------------------------------------------------------------+
//| Óñòàíîâêà ñâîéñòâ îáúåêòà ËÈÍÈß ÒÐÅÍÄÀ                           |
//| Ïàðàìåòðû:                                                       |
//|   dt - äàòà, âðåìÿ                                               |
//|   op - îïåðàöèÿ                                                  |
//|   or - íîìåð îðäåðà (îáúåêòà)                                    |
//|   pp - öåíà                                                      |
//+------------------------------------------------------------------+
void SetPropLines( int op, double Lots, int or, datetime dt, double pp, datetime pÂðåìÿÇàêðûòèÿ,double pÖåíàÇàêðûòèÿ,int FlOpen, string sComment)
  {
   color  cl;
   double p1, p2;
   string no=frogNameObjLine;

   if (op==OP_BUY)
      no=OrderTicket()+no+" "+ DoubleToStr((pÖåíàÇàêðûòèÿ-pp)/Point,0)+" "+DoubleToStr(Lots,2)+" ";
   if(op==OP_SELL )
      no=OrderTicket()+no+" " +  DoubleToStr((pp-pÖåíàÇàêðûòèÿ)/Point ,0)+" "+DoubleToStr(Lots,2)+" ";

   if (op==OP_BUY || op==OP_SELL )
     {
      if (ObjectFind(no+or)<0)
         ObjectCreate(no+or, OBJ_TREND, 0, 0,0, 0,0);
      ObjectSet(no+or, OBJPROP_TIME1 , dt);
      ObjectSet(no+or, OBJPROP_PRICE1, pp);
      ObjectSet(no+or, OBJPROP_TIME2 , pÂðåìÿÇàêðûòèÿ);
      ObjectSet(no+or, OBJPROP_PRICE2,  pÖåíàÇàêðûòèÿ);
     }
   if (op==OP_BUY)
      ObjectSet(no+or, OBJPROP_COLOR, clObjBuy);
   if (op==OP_SELL)
      ObjectSet(no+or, OBJPROP_COLOR, clObjSell);

   ObjectSet(no+or, OBJPROP_RAY , False);

   if(FlOpen==0 )
     {
      ObjectSet( no+or, OBJPROP_STYLE, DRAW_LINE );
      ObjectSet( no+or, OBJPROP_STYLE, STYLE_DOT );
      // ObjectSet( no+or, OBJPROP_COLOR,  );
     }

   p1=ObjectGet(no+or, OBJPROP_PRICE1);
   p2=ObjectGet(no+or, OBJPROP_PRICE2);
   cl=ObjectGet(no+or, OBJPROP_COLOR);
   if (p1!=0 && p2!=0)
     {
      if (cl==clObjBuy)
        {
         if (p1>p2)
           {
            ObjectSet(no+or, OBJPROP_COLOR, clObjBuyLoss);
            ObjectSet( no+or, OBJPROP_STYLE, DRAW_LINE );
            ObjectSet( no+or, OBJPROP_STYLE, STYLE_DOT );

           }
        }
      if (cl==clObjSell)
        {
         if (p1<p2)
           {
            ObjectSet(no+or, OBJPROP_COLOR, clObjSellLoss);
            ObjectSet( no+or, OBJPROP_STYLE, DRAW_LINE );
            ObjectSet( no+or, OBJPROP_STYLE, STYLE_DOT );
           }
        }
     }
  }

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



Sample





Analysis



Market Information Used:

Series array that contains open time of each bar


Indicator Curves created:


Indicators Used:



Custom Indicators Used:

Order Management characteristics:


Other Features:

It writes information to file