0
Посмотрел как работает советник. Переписал все с нуля. Сейчас таскает за ценой все типы ордеров по отдельности или все сразу.
www.opentraders.ru/downloads/1128/

avatar

AM2

  • 2 апреля 2016, 20:46
0
Пишет файл удален.
avatar

AM2

  • 2 апреля 2016, 17:22
0
Напишите ТЗ целиком в топике, мне будет в разы проще и быстрее написать с нуля.
avatar

AM2

  • 2 апреля 2016, 17:20
0
Все есть плюс отключаемые БУ и закрытие в конце дня.
www.opentraders.ru/downloads/1127/

avatar

AM2

  • 2 апреля 2016, 16:15
0
После выходных посмотрю.
avatar

AM2

  • 1 апреля 2016, 21:55
0
Я сделал то что вы просили, но сигнал от индикатора очень некачественный, сам сигнал и то что на экране очень отличаются.


//+------------------------------------------------------------------+
//|                                                         T3MA.mq4 |
//|                                              Copyright 2015, AM2 |
//|                                      http://www.forexsystems.biz |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2015, AM2"
#property link      "http://www.forexsystems.biz"
#property description "Simple expert advisor"

//--- Inputs
extern double Lots      = 0.1;      // лот
extern int StopLoss     = 500;      // лось
extern int TakeProfit   = 500;      // язь
extern int Slip         = 30;       // реквот
extern int Shift        = 1;        // сдвиг
extern int Magic        = 123;      // магик

extern string IndName   = "T3MA-ALARM";
extern int IndPeriod    = 4;

bool b=true,s=true;
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---
   Comment("");
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
   Comment("");
  }
//+------------------------------------------------------------------+
//| Check for open order conditions                                  |
//+------------------------------------------------------------------+
void OpenPos()
  {
   int    r=0;
   double sl=0,tp=0;
//--- get Ind
   double FBlue=iCustom(NULL,0,IndName,IndPeriod,0,Shift);
   double FRed=iCustom(NULL,0,IndName,IndPeriod,1,Shift);
//--- sell conditions
   if(FRed<100 && s)
     {
      if(StopLoss>0) sl=NormalizeDouble(Bid+StopLoss*Point,Digits);
      if(TakeProfit>0) tp=NormalizeDouble(Bid-TakeProfit*Point,Digits);
      r=OrderSend(Symbol(),OP_SELL,Lots,NormalizeDouble(Bid,Digits),Slip,sl,tp,"",Magic,0,Red);
      if(LastDealResult()==1)
        {
         b=true;
         s=false;
        }
     }
//--- buy conditions
   if(FBlue<100 && b)
     {
      if(StopLoss>0) sl=NormalizeDouble(Ask-StopLoss*Point,Digits);
      if(TakeProfit>0) tp=NormalizeDouble(Ask+TakeProfit*Point,Digits);
      r=OrderSend(Symbol(),OP_BUY,Lots,NormalizeDouble(Ask,Digits),Slip,sl,tp,"",Magic,0,Blue);
      if(LastDealResult()==1)
        {
         b=false;
         s=true;
        }
     }
//---
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int LastDealResult()
  {
   int result=0;

   if(OrderSelect(OrdersHistoryTotal()-1,SELECT_BY_POS,MODE_HISTORY))
     {
      if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magic)
        {
         if(OrderProfit()>0)
           {
            result=1;//tp  
           }
         if(OrderProfit()<0)
           {
            result=2;//sl  
           }
        }
     }
   return(result);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
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);
  }
//+------------------------------------------------------------------+
//| OnTick function                                                  |
//+------------------------------------------------------------------+
void OnTick()
  {
   double FBlue=iCustom(NULL,0,IndName,IndPeriod,0,Shift);
   double FRed=iCustom(NULL,0,IndName,IndPeriod,1,Shift);

   if(CountTrades()<1) OpenPos();

   Comment("\n Blue: ",FBlue,
           "\n Red: ",FRed);
//---
  }
//+------------------------------------------------------------------+

avatar

AM2

  • 1 апреля 2016, 21:48
+1
Добавил также отключаемые стопы и закрытие по убытку в валюте: www.opentraders.ru/downloads/1125/


avatar

AM2

  • 1 апреля 2016, 21:18
0
Чужой код смотрю, если можно быстро сделать делаю. После выходных гляну.
avatar

AM2

  • 1 апреля 2016, 20:52
0
Я как то писал подобный Ilvera заказывала, посмотрите у нее в блоге.
avatar

AM2

  • 1 апреля 2016, 20:50
0
Поправлю чуть позже.
avatar

AM2

  • 1 апреля 2016, 17:38
0
Посмотрю сегодня.
avatar

AM2

  • 1 апреля 2016, 17:36
0
сейчас так и есть или вы имеете виду дожидаться противоположного сигнала?
avatar

AM2

  • 1 апреля 2016, 10:53
0
Все добавил:




//+------------------------------------------------------------------+
//|                                                        Kurat.mq4 |
//|                                              Copyright 2016, AM2 |
//|                                      http://www.forexsystems.biz |
//+------------------------------------------------------------------+
#property copyright "Copyright 2016, AM2"
#property link      "http://www.forexsystems.biz"
#property version   "1.00"
#property strict
// Входные параметры
extern double Lots         = 0.1;        // лот
extern double Profit       = 10;         // профит в валюте
extern string StartTime    = "15:25:30"; // время начала торговли
extern string EndTime      = "23:25:30"; // время окончания торговли
extern int    Slip         = 30;         // проскальзывание цены
extern int    Magic        = 123;        // магик

bool trade=true;
//+------------------------------------------------------------------+
//| Функция инициализации индикатора                                 |
//|------------------------------------------------------------------|
int init()
  {
   return(0);
  }
//+------------------------------------------------------------------+
//| Функция деинициализации индикатора                               |
//+------------------------------------------------------------------+
int deinit()
  {
   return(0);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
double AllProfit()
  {
   double profit=0;
   for(int i=OrdersTotal()-1;i>=0;i--)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
        {
         if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magic)
           {
            if(OrderType()<2) profit+=OrderProfit()+OrderCommission()+OrderSwap();
           }
        }
     }
   return (profit);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void CloseAll()
  {
   bool cl;
   for(int i=OrdersTotal()-1;i>=0;i--)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
        {
         if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magic)
           {
            if(OrderType()==0)
              {
               RefreshRates();
               cl=OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(Bid,Digits),Slip,White);
              }
            if(OrderType()==1)
              {
               RefreshRates();
               cl=OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(Ask,Digits),Slip,White);
              }
           }
        }
     }
  }
//+------------------------------------------------------------------+
//| OnTick function                                                  |
//+------------------------------------------------------------------+
void OnTick()
  {
   int r=0;

   if(AccountFreeMargin()<(1000*Lots)) {Print("У вас нет недостаточно денег");   return;}

   if(trade && TimeCurrent()>StringToTime(StartTime) && TimeCurrent()<StringToTime(EndTime))
     {
      if(Open[2]<Open[1]<Open[0])
        {
         Print("Покупка",Ask);
         r=OrderSend(Symbol(),OP_BUY,Lots,NormalizeDouble(Ask,Digits),Slip,0,0,"Kurat Buy",Magic,0,White);
        }
      if(Open[2]>Open[1]>Open[0])
        {
         Print("Продажа",Bid);
         r=OrderSend(Symbol(),OP_SELL,Lots,NormalizeDouble(Bid,Digits),Slip,0,0,"Kurat Sell",Magic,0,Red);
        }
     }

   if(AllProfit()>=Profit)
     {
      CloseAll(); 
      trade=false;
     }
     
   Comment("\n Profit: ",AllProfit(),
           "\n Trade: ",trade);
  }
//+------------------------------------------------------------------+

avatar

AM2

  • 1 апреля 2016, 10:50
0
Расчет фибо сделал в самом советнике и остальное все есть: www.opentraders.ru/downloads/1124/

avatar

AM2

  • 1 апреля 2016, 10:04
0
Он сыпет неограниченное количество ордеров плюс ошибки закрытия. Опишите ТЗ целиком и я перепишу с нуля.
avatar

AM2

  • 1 апреля 2016, 08:28
0
Я не возьмусь править чужой код. Простое ТЗ с нуля рассмотрю.
avatar

AM2

  • 1 апреля 2016, 08:25
0
Настоящий первоаперльский код! :D 
avatar

AM2

  • 1 апреля 2016, 08:21
0
Для начала привел ТЗ в человеческий вид.

В советнике присутствовать параметры:

1 — тейк и стоп
2 — время торговли
3 — макди отключаемый
4 — сдвиг

Открытие по индикатору BBands_Stop_v1 с первой свечи.
Параметры индюка BBands_Stop_v1- Length и MoneyRisk вывести в настройки советника.
И умножение лота после минусовой сделки.

Сигнал на покупку если сигнал индюка BBands_Stop_v1 находиться в зоне уровней индюка Avtofibo 0.00-23.6

Сигналом на продажу являеться если сигнал индюка BBands_Stop_v1 находиться между уровней или на уровнях индюка Avtofibo 100-78.6

На скрине видна зона покупок и продаж выход по тейку или стопу.
avatar

AM2

  • 1 апреля 2016, 08:08
0
Посмотрю когда поправят файлик.
avatar

AM2

  • 1 апреля 2016, 08:03