+1
Здесь с тралом: www.opentraders.ru/downloads/403/
И статья с примером кода: mql.opentraders.ru/25225.html
avatar

AM2

  • 16 ноября 2015, 23:43
+1
Вот точно такой же готовый: zakaz.opentraders.ru/28856.html
avatar

AM2

  • 16 ноября 2015, 23:25
0
Советник наставил лимитников и закрыл все по профиту:



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

//--- Inputs
extern double Lots          = 0.1; // лот
extern int    StopLoss      = 500; // лось 
extern int    TakeProfit    = 500; // язь
extern int    Profit        = 500; // язь в рублях
extern int    Delta         = 100; // расстояние от фрактала
extern int    MAPeriod      = 12;  // период МА
extern int    Slip          = 30;  // проскальзывание
extern int    Shift         = 3;   // сдвиг баров назад
extern int    Count         = 100; // количество открываемых ордеров
extern int    Magic         = 123; // магик

int t=0;
//+------------------------------------------------------------------+
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 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()==OP_BUY || OrderType()==OP_SELL) profit+=OrderProfit();
           }
        }
     }
   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()==OP_BUY) cl=OrderClose(OrderTicket(),OrderLots(),Bid,Slip,Blue);
            if(OrderType()==OP_SELL) cl=OrderClose(OrderTicket(),OrderLots(),Ask,Slip,Red);
           }
        }
     }
  }
//+------------------------------------------------------------------+
//| Check for open order conditions                                  |
//+------------------------------------------------------------------+
void OpenPos()
  {
   double up=0,dn=0,ma=0,pr=0,sl=0,tp=0;
   int    res;
//--- get ind
   up=iFractals(NULL,0,MODE_UPPER,Shift);
   dn=iFractals(NULL,0,MODE_LOWER,Shift);
   ma=iMA(NULL,0,MAPeriod,0,MODE_SMA,PRICE_CLOSE,1);
//--- sell conditions
   if(up>0 && Bid>ma)
     {
      pr=NormalizeDouble(up+Delta*Point,Digits);
      if(StopLoss>0) sl=NormalizeDouble(pr+StopLoss*Point,Digits);
      if(TakeProfit>0) tp=NormalizeDouble(pr-TakeProfit*Point,Digits);
      res=OrderSend(Symbol(),3,Lots,pr,Slip,sl,tp,"",Magic,0,Red);
      return;
     }
//--- buy conditions
   if(dn>0 && Ask<ma)
     {
      pr=NormalizeDouble(dn-Delta*Point,Digits);
      if(StopLoss>0) sl=NormalizeDouble(pr-StopLoss*Point,Digits);
      if(TakeProfit>0) tp=NormalizeDouble(pr+TakeProfit*Point,Digits);      
      res=OrderSend(Symbol(),2,Lots,pr,Slip,sl,tp,"",Magic,0,Blue);
      return;
     }
//---
  }
//+------------------------------------------------------------------+
//| OnTick function                                                  |
//+------------------------------------------------------------------+
void OnTick()
  {
   double up,dn;
//--- get ind
   up=iFractals(NULL,0,MODE_UPPER,Shift);
   dn=iFractals(NULL,0,MODE_LOWER,Shift);

   if(CountTrades()<Count && t!=Time[0])
     {
      OpenPos();
      t=Time[0];
     }

   if(AllProfit()>Profit) CloseAll();

   Comment("\n  UP Fractal ",up,
           "\n  DN Fractal ",dn,
           "\n  Profit: ",AllProfit());
//---
  }
//+------------------------------------------------------------------+
avatar

AM2

  • 16 ноября 2015, 22:37
0
У меня есть советник Hello в базе, там тоже усреднение и рси, вот на его основе еще можно попробовать.
avatar

AM2

  • 16 ноября 2015, 22:24
0
Нет в этот код я больше не полезу. Я пробую вводить свои функции и переменные, но они не согласуются с общей логикой советника.
avatar

AM2

  • 16 ноября 2015, 22:00
0
Нарисуйте на скрине с индикатором, все как можно подробнее?
avatar

AM2

  • 16 ноября 2015, 18:19
+1
Есть увеличение лота, усреднение с шагом.
www.opentraders.ru/downloads/934/

avatar

AM2

  • 16 ноября 2015, 17:45
+1
Сейчас смотрю, есть ли сигнал от индикатора и сначала сделаю максимально упрощенный вариант.
avatar

AM2

  • 16 ноября 2015, 17:09
0
У меня стоит условие открытия на новом баре, а закрытие как только изменится сигнал индикатора. Только что проверил, открывает и закрывает. Чтобы долго не ждать, менял параметры индикатора в советнике.

avatar

AM2

  • 16 ноября 2015, 16:55
0
Шороху навел в системных файлах.
avatar

AM2

  • 16 ноября 2015, 11:26
0
А это тот с дллкой опять? :)  Не видя советник и индикатор трудно что то сказать.
avatar

AM2

  • 16 ноября 2015, 11:20
0
То что можно быстро сделать, делаю.
avatar

AM2

  • 16 ноября 2015, 10:42
0
Сейчас ставит лок несколько раз и смотрит на сколько цена прошла вверх от лока, сравнивает со значением в настройках и если цена прошла расстояние больше указанного количества пунктов и вернулась, закрывает лок.

www.opentraders.ru/downloads/933/

avatar

AM2

  • 16 ноября 2015, 08:50
0
То что можно быстро сделать, сразу делаю.
avatar

AM2

  • 16 ноября 2015, 07:39
0
Заменил на машки: www.opentraders.ru/downloads/526/

avatar

AM2

  • 16 ноября 2015, 07:37
0
Ну вот и рез. Не то что хотел бы увидеть.

Тогда к платному.
avatar

AM2

  • 16 ноября 2015, 07:15
+1
Атака мертвецов

Но когда германские цепи приблизились к окопам, из густо-зеленого хлорного тумана на них обрушилась… контратакующая русская пехота. Зрелище было ужасающим: бойцы шли в штыковую с лицами, обмотанными тряпками, сотрясаясь от жуткого кашля, буквально выплевывая куски легких на окровавленные гимнастерки. Это были остатки 13-й роты 226-го пехотного Землянского полка, чуть больше 60 человек. Но они ввергли противника в такой ужас, что германские пехотинцы, не приняв боя, ринулись назад, затаптывая друг друга и повисая на собственных проволочных заграждениях. <…> Это сражение войдет в историю как «атака мертвецов».


avatar

AM2

  • 15 ноября 2015, 23:26
0
У вас неверная постановка задачи. Смотрите на рисунке:

есть серия открытых ордеров Сел, депозит просел на определённый %, открывается лок.ордер Бай и СЛ у него равен ( 0 ), то при возврате цены к открытию этого ордера он закрывается.




Если по вашему ТЗ, то все :) 
www.opentraders.ru/downloads/933/
avatar

AM2

  • 15 ноября 2015, 00:33