0
Поменяйте в настройках переменную Type с 0 на 1 и будет вам счастье! :) 
avatar

AM2

  • 20 января 2015, 20:49
0
Уменьшил параметр RISK до 1 в индикаторе и в моем советнике количество сделок с начала 14-го 217 при стопах 500 и 200 на М15.
avatar

AM2

  • 19 января 2015, 21:57
0
Попробуйте этот:


//+------------------------------------------------------------------+
//|                                        ASCTrend1sig_noSound.mq4  |
//|                                       Ramdass - Conversion only  |
//+------------------------------------------------------------------+

#property indicator_chart_window
#property indicator_buffers 2
#property indicator_color1 Red
#property indicator_color2 Blue
//---- input parameters
extern int RISK = 3;
extern int CountBars = 300;
//---- buffers
double val1[];
double val2[];


//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
    //---- indicator line
    IndicatorBuffers(2);
    SetIndexStyle(0, DRAW_ARROW, 0, 1);
    SetIndexArrow(0, 234);
    SetIndexStyle(1, DRAW_ARROW, 0, 1);
    SetIndexArrow(1, 233);
    SetIndexBuffer(0, val1);
    SetIndexBuffer(1, val2);
    if(CountBars >= 1000) 
        CountBars=950;
    SetIndexDrawBegin(0, Bars - CountBars + 11 + 1);
    SetIndexDrawBegin(1, Bars - CountBars + 11 + 1);
    //----
    return(0);
  }
//+------------------------------------------------------------------+
//| ASCTrend1sig                                                     |
//+------------------------------------------------------------------+
int start()
  {
    int i, shift, counted_bars = IndicatorCounted();
    int Counter, i1, value10, value11;
    double value1, x1, x2;
    double value2, value3;
    double TrueCount, Range, AvgRange, MRO1, MRO2;
    double Table_value2[1000];
    //----
    value10 = 3 + RISK*2;
    x1 = 67 + RISK;
    x2 = 33 - RISK;
    value11 = value10;
    //----
    if(Bars <= 11 + 1) 
        return(0);
    //---- initial zero
    if(counted_bars < 11 + 1)
      {
        for(i = 1; i <= 0; i++) 
            val1[CountBars-i] = 0.0;
        for(i = 1; i <= 0; i++) 
            val2[CountBars-i] = 0.0;
      }
    //----
    shift = CountBars - 11 - 1;
    while(shift >= 0)
      {
        Counter = shift;
	       Range = 0.0;
	       AvgRange = 0.0;
	       //----
        for(Counter = shift; Counter <= shift + 9; Counter++) 
	           AvgRange=AvgRange + MathAbs(High[Counter] - Low[Counter]);
	       //----
        Range = AvgRange / 10;
	       Counter = shift;
	       TrueCount = 0;
	       //----
        while(Counter < shift + 9 && TrueCount < 1)
		        {
		          if(MathAbs(Open[Counter] - Close[Counter+1]) >= Range*2.0) 
		              TrueCount = TrueCount + 1;
		          Counter=Counter+1;
		        }
	       //----
        if(TrueCount >= 1) 
	         {
	           MRO1 = Counter;
	         } 
	       else 
	         {
	           MRO1 = -1;
	         }
	       //----
        Counter = shift;
	       TrueCount = 0;
	       //----
        while(Counter < shift + 6 && TrueCount < 1)
		        {
		          if (MathAbs(Close[Counter+3] - Close[Counter]) >= Range*4.6) 
		              TrueCount = TrueCount + 1;
		          Counter = Counter + 1;
		        }
	       //----
        if(TrueCount >= 1) 
	         {
	           MRO2 = Counter;
	         } 
	       else 
	         {
	           MRO2 = -1;
	         }
	       //----
        if(MRO1 > -1) 
	         {
	           value11 = 3;
	         } 
	       else 
	         {
	           value11 = value10;
	         }
	       //----
        if(MRO2 > -1) 
	         {
	           value11 = 4;
	         } 
	       else 
	         {
	           value11 = value10;
	         }
	       //----
        value2 = 100 - MathAbs(iWPR(NULL, 0, value11, shift)); // PercentR(value11=9)
	       Table_value2[shift] = value2;
	       val1[shift] = 0;
	       val2[shift] = 0;
	       value3 = 0;
	       //----
        if(value2 < x2)
		        {
		          i1 = 1;
		          while(Table_value2[shift + i1] >= x2 && Table_value2[shift+i1] <= x1)
		            {
		              i1++;
		            }
		          //----
            if(Table_value2[shift+i1] > x1) 
			           {
			             value3 = High[shift] + Range*0.5;
			             val1[shift] = value3;
			           } 
		        }
	       if(value2 > x1)
		        {
		          i1=1;
		          while(Table_value2[shift+i1] >= x2 && Table_value2[shift+i1] <= x1)
		            {
		              i1++;
		            }
		          if(Table_value2[shift+i1] < x2) 
			           {
			             value3 = Low[shift] - Range*0.5;
			             val2[shift] = value3;
			           }
		        }
      
        shift--;
      }
    return(0);
  }
//+------------------------------------------------------------------+



avatar

AM2

  • 19 января 2015, 20:29
0
C помощью этой функции хорошо определяются последние фракталы:

<code>
//+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,  http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+
//|  Версия   : 07.10.2006                                                     |
//|  Описание : Поиск ближайшего фрактала. Возвращает ценовой уровень.         |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    sy   - наименование инструмента      ("" или NULL - текущий символ)     |
//|    tf   - таймфрейм                     (    0       - текущий ТФ)         |
//|    mode - тип фрактала                  (MODE_LOWER|MODE_UPPER)            |
//+----------------------------------------------------------------------------+
double FindNearFractal(string sy="0", int tf=0, int mode=MODE_LOWER) {
  if (sy=="" || sy=="0") sy=Symbol();
  double f=0;
  int    d=MarketInfo(sy, MODE_DIGITS), s;
  if (d==0) if (StringFind(sy, "JPY")<0) d=4; else d=2;

  for (s=2; s<100; s++) {
    f=iFractals(sy, tf, mode, s);
    if (f!=0) return(NormalizeDouble(f, d));
  }
  Print("FindNearFractal(): Фрактал не найден");
  return(0);
}
//+----------------------------------------------------------------------------+  
</code>


<code>
//+------------------------------------------------------------------+
//|                                                          ASC.mq4 |
//|                                            Copyright © 2015, AM2 |
//|                                      http://www.forexsystems.biz |
//+------------------------------------------------------------------+

#property copyright "Copyright © 2015, AM2"
#property link      "http://www.forexsystems.biz"
#property description "Forex expert advisor"

//--- Inputs
extern int StopLoss      = 2000;  // стоплосс ордера
extern int TakeProfit    = 2000;  // тейкпрофит ордера
extern int Expiration    = 14;   // время истечения ордера
extern int Delta         = 100;  // расстояние от вершин
extern double Lots       = 0.1;  // объем позиции
extern int MAGIC         = 333;  // магик

double ASCBuy,ASCSell,FUP,FDN,price;
//+------------------------------------------------------------------+
//| Check for open order conditions                                  |
//+------------------------------------------------------------------+
void PutOrder()
  {
   int    res,b,s;
   datetime expiration = TimeCurrent()+3600*Expiration;
    ASCBuy=iCustom(Symbol(),0,"ASCtrend",1,1);
    ASCSell=iCustom(Symbol(),0,"ASCtrend",0,1);
    FUP=iFractals(Symbol(),0,MODE_UPPER,2);
    FDN=iFractals(Symbol(),0,MODE_LOWER,2);   
      
   for(int i=OrdersTotal()-1;i>=0;i--)
    {
     if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
      {
       if(OrderSymbol()==Symbol() && OrderMagicNumber()==MAGIC)
        {
         if(OrderType()==OP_BUYSTOP)b++;
         if(OrderType()==OP_SELLSTOP)s++; 
        }
      }
    }
    
   //--- buy
   if(ASCSell<2 && b<1)
    {   
     price=FDN+Delta*Point;
     res=OrderSend(Symbol(),OP_BUYSTOP,Lots,fND(price),3,fND(price-StopLoss*Point),fND(price+TakeProfit*Point),"",MAGIC,expiration,Blue);
    }             
                    
   //--- sell 
   if(ASCBuy<2 && s<1)
    {
     price=FUP-Delta*Point;
     res=OrderSend(Symbol(),OP_SELLSTOP,Lots,fND(price),3,fND(price+StopLoss*Point),fND(price-TakeProfit*Point),"",MAGIC,expiration,Red);
    } 
    
   Comment("\nBuy Price ",ASCBuy,"\nSell Price  ",ASCSell,
           "\nFUP ",FindNearFractal(NULL,0,MODE_UPPER),"\nFDN  ",FindNearFractal(NULL,0,MODE_LOWER));  
  }
//+------------------------------------------------------------------+
void DelOrder()
  {
   bool del; 
   for (int i=OrdersTotal()-1; i>=0; i--) 
    {
     if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) break; 
     if (OrderType()==OP_BUYSTOP)  del=OrderDelete(OrderTicket()); 
     if (OrderType()==OP_SELLSTOP) del=OrderDelete(OrderTicket());       
    }    
  }
//+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,  http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+
//|  Версия   : 07.10.2006                                                     |
//|  Описание : Поиск ближайшего фрактала. Возвращает ценовой уровень.         |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    sy   - наименование инструмента      ("" или NULL - текущий символ)     |
//|    tf   - таймфрейм                     (    0       - текущий ТФ)         |
//|    mode - тип фрактала                  (MODE_LOWER|MODE_UPPER)            |
//+----------------------------------------------------------------------------+
double FindNearFractal(string sy="0", int tf=0, int mode=MODE_LOWER) {
  if (sy=="" || sy=="0") sy=Symbol();
  double f=0;
  int    d=MarketInfo(sy, MODE_DIGITS), s;
  if (d==0) if (StringFind(sy, "JPY")<0) d=4; else d=2;

  for (s=2; s<100; s++) {
    f=iFractals(sy, tf, mode, s);
    if (f!=0) return(NormalizeDouble(f, d));
  }
  Print("FindNearFractal(): Фрактал не найден");
  return(0);
}
//+----------------------------------------------------------------------------+  
//+------------------------------------------------------------------+
bool NewBar()
  {
   static datetime lastbar = 0;
   datetime curbar = Time[0];
   if(lastbar!=curbar)
   {
      lastbar=curbar;
      return (true);
   }
   else
   {
      return(false);
   }
  }
//+------------------------------------------------------------------+

int CountTrades()
  {
   int count=0;
   for(int i=OrdersTotal()-1;i>=0;i--)
    {
     if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
      {
       if(OrderSymbol()==Symbol() && OrderMagicNumber()==MAGIC)
        {
         if(OrderType()==OP_BUY || OrderType()==OP_SELL)
          count++;
        }
      }
    }
    return(count);
  }
//+------------------------------------------------------------------+
double fND(double d,int n=-1)
  {
   if(n<0) return(NormalizeDouble(d, Digits));
   return(NormalizeDouble(d, n));
  }  
//+------------------------------------------------------------------+
//| OnTick function                                                  |
//+------------------------------------------------------------------+
void OnTick()
  {
//--- check for history and trading
   if(Bars<100 || IsTradeAllowed()==false)
      return;
   
   if(CountTrades()<1)PutOrder();
   if(CountTrades()>0)DelOrder();  
//---
  }
//+------------------------------------------------------------------+

</code>
avatar

AM2

  • 19 января 2015, 19:11
0
Посмотрите теперь есть: www.opentraders.ru/downloads/563/

avatar

AM2

  • 19 января 2015, 17:50
0
Проверил работоспособность скриптов. Все работает. Добавил ввод параметров в диалоговое окно и вывел в настройки количество миллисекунд, через которые выставляем следующий ордер.



Обновил файлик в базе: www.opentraders.ru/downloads/563/
avatar

AM2

  • 19 января 2015, 17:48
0
Только что бросил скрипт на график, выставил ордера цены по которым были актуальны. Сейчас буду смотреть все остальное:

avatar

AM2

  • 19 января 2015, 16:41
0
Может быть лучше в функции экстремумы считать а не через iFractals. Зигзаг хорошо возвращает значения вершинок своих:


/+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,  http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+
//|  Версия   : 07.10.2006                                                     |
//|  Описание : Возвращает экстремум ЗигЗага по его номеру.                    |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    sy - наименование инструмента   (NULL или "" - текущий символ)          |
//|    tf - таймфрейм                  (      0     - текущий ТФ)              |
//|    ne - номер экстремума           (      0     - последний)               |
//|    dp - ExtDepth                                                           |
//|    dv - ExtDeviation                                                       |
//|    bs - ExtBackstep                                                        |
//+----------------------------------------------------------------------------+
double GetExtremumZZPrice(string sy="", int tf=0, int ne=0, int dp=12, int dv=5, int bs=3) {
  if (sy=="" || sy=="0") sy=Symbol();
  double zz;
  int    i, k=iBars(sy, tf), ke=0;

  for (i=1; i<k; i++) {
    zz=iCustom(sy, tf, "ZigZag", dp, dv, bs, 0, i);
    if (zz!=0) {
      ke++;
      if (ke>ne) return(zz);
    }
  }
  Print("GetExtremumZZPrice(): Экстремум ЗигЗага номер ",ne," не найден");
  return(0);
}
avatar

AM2

  • 17 января 2015, 21:35
0
Модифицировать предложенный вами индикатор не представлялось возможным, т.к. все 8 из возможных индикаторных буферов были использованы. Оставалось делать индикатор от индикатора или советник.

Загружать в папку Experts.

Вот код советника. Можете погонять его по истории, поменять параметры в строчках, чтобы добиться оптимального сигнала:

if(MTFDN4==0 && MTFDN3==0 && MTFDN2==0 && MTFDN1==0 && OrdersTotal()<1 && s<1)
   if(MTFUP4==0 && MTFUP3==0 && MTFUP2==2 && MTFUP1==1 && OrdersTotal()<1 && b<1)



//+------------------------------------------------------------------+
//|                                            MTFSupertrend Bar.mq4 |
//|                                              Copyright 2014, AM2 |
//|                                      http://www.forexsystems.biz |
//+------------------------------------------------------------------+
#property copyright "Copyright 2014, AM2"
#property link      "http://www.forexsystems.biz"
#property version   "1.00"
#property strict

#define MAGICMA  20141020

//---- input parameters
extern int StopLoss     = 500; // лось
extern int TakeProfit   = 500; // язь
extern double Lot       = 0.1; // лот
extern int    Slip      = 100; // реквот

int b,s;
//+------------------------------------------------------------------+
//| Создает стрелку                                                  |
//+------------------------------------------------------------------+
bool ArrowCreate(const long              chart_ID=0,           // ID графика
                 const string            name="Arrow",         // имя стрелки
                 const int               sub_window=0,         // номер подокна
                 datetime                time=0,               // время точки привязки
                 double                  price=0,              // цена точки привязки
                 const uchar             arrow_code=252,       // код стрелки
                 const ENUM_ARROW_ANCHOR anchor=ANCHOR_BOTTOM, // положение точки привязки
                 const color             clr=clrRed,           // цвет стрелки
                 const ENUM_LINE_STYLE   style=STYLE_SOLID,    // стиль окаймляющей линии
                 const int               width=3,              // размер стрелки
                 const bool              back=false,           // на заднем плане
                 const bool              selection=true,       // выделить для перемещений
                 const bool              hidden=true,          // скрыт в списке объектов
                 const long              z_order=0)            // приоритет на нажатие мышью
  {              
//--- создадим стрелку
   if(!ObjectCreate(chart_ID,name,OBJ_ARROW,sub_window,time,price))
     {
      Print(__FUNCTION__,
            ": не удалось создать стрелку! Код ошибки = ",GetLastError());
      return(false);
     }
//--- установим код стрелки
   ObjectSetInteger(chart_ID,name,OBJPROP_ARROWCODE,arrow_code);
//--- установим способ привязки
   ObjectSetInteger(chart_ID,name,OBJPROP_ANCHOR,anchor);
//--- установим цвет стрелки
   ObjectSetInteger(chart_ID,name,OBJPROP_COLOR,clr);
//--- установим стиль окаймляющей линии
   ObjectSetInteger(chart_ID,name,OBJPROP_STYLE,style);
//--- установим размер стрелки
   ObjectSetInteger(chart_ID,name,OBJPROP_WIDTH,width);
//--- отобразим на переднем (false) или заднем (true) плане
   ObjectSetInteger(chart_ID,name,OBJPROP_BACK,back);
//--- включим (true) или отключим (false) режим перемещения стрелки мышью
//--- при создании графического объекта функцией ObjectCreate, по умолчанию объект
//--- нельзя выделить и перемещать. Внутри же этого метода параметр selection
//--- по умолчанию равен true, что позволяет выделять и перемещать этот объект
   ObjectSetInteger(chart_ID,name,OBJPROP_SELECTABLE,selection);
   ObjectSetInteger(chart_ID,name,OBJPROP_SELECTED,selection);
//--- скроем (true) или отобразим (false) имя графического объекта в списке объектов
   ObjectSetInteger(chart_ID,name,OBJPROP_HIDDEN,hidden);
//--- установим приоритет на получение события нажатия мыши на графике
   ObjectSetInteger(chart_ID,name,OBJPROP_ZORDER,z_order);
//--- успешное выполнение
   return(true);
  }
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {

   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---
   
  }
  
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
   double MTFUP4=iCustom(Symbol(),0,"MTFSuperTrendBar",0,1);
   double MTFDN4=iCustom(Symbol(),0,"MTFSuperTrendBar",1,1);
   double MTFUP3=iCustom(Symbol(),0,"MTFSuperTrendBar",2,1);
   double MTFDN3=iCustom(Symbol(),0,"MTFSuperTrendBar",3,1);
   double MTFUP2=iCustom(Symbol(),0,"MTFSuperTrendBar",4,1);
   double MTFDN2=iCustom(Symbol(),0,"MTFSuperTrendBar",5,1);
   double MTFUP1=iCustom(Symbol(),0,"MTFSuperTrendBar",6,1);
   double MTFDN1=iCustom(Symbol(),0,"MTFSuperTrendBar",7,1);         

   if(MTFDN4==0 && MTFDN3==0 && MTFDN2==0 && MTFDN1==0 && OrdersTotal()<1 && s<1)
    {
     //int res=OrderSend(Symbol(),OP_SELL,Lot,Bid,Slip,Bid+StopLoss*Point,Bid-TakeProfit*Point,"",MAGICMA,0,Red);
     ArrowCreate(0,"SellArrow"+TimeToStr(TimeCurrent()),0,TimeCurrent(),Ask+50*Point,234,ANCHOR_BOTTOM,clrRed,STYLE_SOLID,3,false,true,true,0);
     Alert("Советник «Форекс фридом». Сигнал Sell.");s++;b=0;
    }
       
   if(MTFUP4==0 && MTFUP3==0 && MTFUP2==2 && MTFUP1==1 && OrdersTotal()<1 && b<1)
    {
     //int res=OrderSend(Symbol(),OP_BUY,Lot,Ask,Slip,Ask-StopLoss*Point,Ask+TakeProfit*Point,"",MAGICMA,0,Blue);
     ArrowCreate(0,"BuyArrow"+TimeToStr(TimeCurrent()),0,TimeCurrent(),Bid-50*Point,233,ANCHOR_TOP,clrBlue,STYLE_SOLID,3,false,true,true,0);
     Alert("Советник «Форекс фридом». Сигнал Buy.");b++;s=0;
    }
    

    
   Comment(
           "\nMTFUP4 ",MTFUP4,
           "\nMTFDN4 ",MTFDN4,
           "\nMTFUP3 ",MTFUP3,
           "\nMTFDN3 ",MTFDN3,
           "\nMTFUP2 ",MTFUP2,
           "\nMTFDN2 ",MTFDN2,
           "\nMTFUP1 ",MTFUP1,
           "\nMTFDN1 ",MTFDN1                                            
           );    
   
  }
//+------------------------------------------------------------------+

avatar

AM2

  • 17 января 2015, 21:10
0
Я сейчас закоментирую выставление ордера, добавлю алерт, как вы просили в самом начале. Бросаете советник на график, он будет рисовать стрелки и алертами сигналить. Устроит так?
avatar

AM2

  • 17 января 2015, 19:51
0
Я написал скрипты, а проверить только в понедельник получится. т.к. маркет из клосед *pardon* 

Файлики: www.opentraders.ru/downloads/563/
avatar

AM2

  • 17 января 2015, 15:29
0
В чем именно загвоздка? Я в своем коде получаю значения индикатора

double ASCBuy=iCustom(Symbol(),0,"ASCtrend",1,1);
double ASCSell=iCustom(Symbol(),0,"ASCtrend",0,1);


При появлении точки, выставляю ордер на расстоянии от цены:

if(ASCBuy<2 && b<1)
    {   
     price=ASCBuy+Delta*Point;
     res=OrderSend(Symbol(),OP_BUYSTOP,Lots,fND(price),3,fND(price-StopLoss*Point),fND(price+TakeProfit*Point),"",MAGIC,expiration,Blue);
    }             


Что вам мешает сделать, подобным образом?
avatar

AM2

  • 17 января 2015, 15:18
0
Тогда почему у вас не получается установить таким же образом ордер при появлении желтой или синей точки индикатора ASCTrend?
avatar

AM2

  • 17 января 2015, 15:00
0
Начал делать.
avatar

AM2

  • 17 января 2015, 14:18
0
Как сумел вытащил значения из индикатора. Посмотрите что получилось. Советник ставит по условию стрелки и открывает соответствуюший ордер.



Файл в базе: www.opentraders.ru/downloads/562/

avatar

AM2

  • 17 января 2015, 14:08
0
Предположение оказалось верным т.к. мой простой советник торгует по сигналам индикатора.




//+------------------------------------------------------------------+
//|                                                          ASC.mq4 |
//|                                            Copyright © 2015, AM2 |
//|                                      http://www.forexsystems.biz |
//+------------------------------------------------------------------+

#property copyright "Copyright © 2015, AM2"
#property link      "http://www.forexsystems.biz"
#property description "Forex expert advisor"

//--- Inputs
extern int StopLoss      = 2000;  // стоплосс ордера
extern int TakeProfit    = 2000;  // тейкпрофит ордера
extern int Expiration    = 14;   // время истечения ордера
extern int Delta         = 100;  // расстояние от вершин
extern double Lots       = 0.1;  // объем позиции
extern int MAGIC         = 333;  // магик
//+------------------------------------------------------------------+
//| Check for open order conditions                                  |
//+------------------------------------------------------------------+
void PutOrder()
  {
   int    res,b,s;
   datetime expiration = TimeCurrent()+3600*Expiration;
   double ASCBuy=iCustom(Symbol(),0,"ASCtrend",1,1);
   double ASCSell=iCustom(Symbol(),0,"ASCtrend",0,1);
   double price;
      
   for(int i=OrdersTotal()-1;i>=0;i--)
    {
     if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
      {
       if(OrderSymbol()==Symbol() && OrderMagicNumber()==MAGIC)
        {
         if(OrderType()==OP_BUYSTOP)b++;
         if(OrderType()==OP_SELLSTOP)s++; 
        }
      }
    }
    
   //--- buy
   if(ASCBuy<2 && b<1)
    {   
     price=ASCBuy+Delta*Point;
     res=OrderSend(Symbol(),OP_BUYSTOP,Lots,fND(price),3,fND(price-StopLoss*Point),fND(price+TakeProfit*Point),"",MAGIC,expiration,Blue);
    }             
                    
   //--- sell 
   if(ASCSell<2 && s<1)
    {
     price=ASCSell-Delta*Point;
     res=OrderSend(Symbol(),OP_SELLSTOP,Lots,fND(price),3,fND(price+StopLoss*Point),fND(price-TakeProfit*Point),"",MAGIC,expiration,Red);
    } 
    
   Comment("\nBuy Price ",ASCBuy,"\nSell Price  ",ASCSell);  
  }
//+------------------------------------------------------------------+
void DelOrder()
  {
   bool del; 
   for (int i=OrdersTotal()-1; i>=0; i--) 
    {
     if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) break; 
     if (OrderType()==OP_BUYSTOP)  del=OrderDelete(OrderTicket()); 
     if (OrderType()==OP_SELLSTOP) del=OrderDelete(OrderTicket());       
    }    
  }
//+------------------------------------------------------------------+
bool NewBar()
  {
   static datetime lastbar = 0;
   datetime curbar = Time[0];
   if(lastbar!=curbar)
   {
      lastbar=curbar;
      return (true);
   }
   else
   {
      return(false);
   }
  }
//+------------------------------------------------------------------+

int CountTrades()
  {
   int count=0;
   for(int i=OrdersTotal()-1;i>=0;i--)
    {
     if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
      {
       if(OrderSymbol()==Symbol() && OrderMagicNumber()==MAGIC)
        {
         if(OrderType()==OP_BUY || OrderType()==OP_SELL)
          count++;
        }
      }
    }
    return(count);
  }
//+------------------------------------------------------------------+
double fND(double d,int n=-1)
  {
   if(n<0) return(NormalizeDouble(d, Digits));
   return(NormalizeDouble(d, n));
  }  
//+------------------------------------------------------------------+
//| OnTick function                                                  |
//+------------------------------------------------------------------+
void OnTick()
  {
//--- check for history and trading
   if(Bars<100 || IsTradeAllowed()==false)
      return;
   
   if(CountTrades()<1)PutOrder();
   if(CountTrades()>0)DelOrder();  
//---
  }
//+------------------------------------------------------------------+

avatar

AM2

  • 17 января 2015, 04:01
0
Пока нет сигнала, его значение в окне: 2147383647.0
Когда сигнал появляется, его значение скажем 1.190237 как на скрине.
Значит наличие сигнала можем проверять не с помощью условия if(f_up>0) а if(f_up<2)



Проверить мое предположение не удалось, т.к. чужой код для меня темный лес
avatar

AM2

  • 17 января 2015, 03:36
0
Открыл по фунту вручную бай, советник открыл по евре тем же лотом селл. советник торгует только на той паре, на которой установлен. Особенности МТ4.



Файл в базе: www.opentraders.ru/downloads/561
avatar

AM2

  • 16 января 2015, 22:44
0
Начал делать
avatar

AM2

  • 16 января 2015, 21:03
0
Я бы не стал открыто публиковать результаты без вашего согласия. Но по скринам и истории сделок, вполне возможно разгадать ТС.
avatar

AM2

  • 16 января 2015, 14:31