Доработка ботов (советников, индикаторов)

Статус
Закрыто для дальнейших ответов.

iceberg

€ $ £ ¥ ₳
Индикатор Heart of Forex не возможно перелечить? На планшете экранчик маленький, когда индюк стоит в нижнем окошке, график совсем сплющенный в основном окне :-(
Доктора, сделайте доброе дело, научите его стоять в основном окне.
 

Yoshimo

Почетный гражданин
просьба

Уважаемые программисты!
Хелп!
Бот стоит на одной паре, на разных тф, сдругим ботом, но подхватывает чужой ордер. Тоесть выстовляет свой (коэф.ув. , тп, растояние) в зависимости от уже открытого ордера другим ботом и меняет тп уже открытого ордера другим ботом. Вероятно надо посмотреть, есть ли у него проверка на магик, или может ещё быть другая причина?
Заранее благодарю.

Если не затруднит, вгляните.

Спасибо
 

Вложения

violeta

Прохожий
Уважаемые программисты!
Прошу переделать индикатор.
Суть работы, создать индикатор рисующий на одном графике трендовые линии текущего таймфрейма + старших и младших таймфреймов. С возможность во внешних настройках включать (отключать) отображаемые линии по таймфреймам и настройками толщины и цвета линий.
P.S. Есть индикатор, который можно взять за основу, один человечик брался за роботу но до нужного результата не дошел.
Имеющийся индикатор при переключении по таймфреймам наносит трендовые линии, но корректирует (сопровождает ) , только трендовуые линии на текущем таймфрейме графика.
Нужно его подправить чтоб, он отображал и корректировал заданные по таймфреймам трендовые линии на одном графике.
После доработки индикатора, выложу его в разделе "индикаторы" и объясню как его использовать.
Скрин с визуальным примером прилагаю.

Скажите, а этот индикатор вы еще не получили ?
Довольно итиресная идея. Из скрина я примерно поняла смысл работы. Было бы неплохо попробовать готовую версию.
 

elixir

Новичок форума
Ребятки програмисты просьба прикрутить к стандартному советнику macd sample стоп лос по заданому количеству пунктов! за ранее спасибо
 

TREBL

Новичок форума
Добрые люди! Кому не в лом, то помогите бедному трейдеру. Прикрутите, пожалуйста, Stop к этой сове. Я даже знаю где кнопка " СПАСИБО ".
вот илан со стопами
 

Вложения

TREBL

Новичок форума
может кто сделать чтобы на этой сове открывал ордера сразу а не с задержкой
 

Frolov

Новичок форума
Всем здравствуйте. Уважаемые программисты , нужна Ваша помощь. Нужно написать функцию для проверки типа последнего закрытого ордера по магику . Раньше когда была 1 стратегия и магик не использовался тип последнего закрытого ордера по валютной паре проверялся функцией
int last_trade()
{
int i,type = -1;
datetime time=0;

for(i=OrdersTotal()-1;i>=0;i--)
{
OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
if(OrderCloseTime()>time )
{

type = OrderType();
time = OrderOpenTime();

}
}

for(i=OrdersHistoryTotal()-1;i>=0;i--)
{
OrderSelect(i,SELECT_BY_POS,MODE_HISTORY);
if(OrderCloseTime()>time )
{

type = OrderType();
time = OrderOpenTime();

}
}
return(type);
}
и потом при открытии ордера
if(last_trade()!=OP_BUY)
{
Условие открытия Buy
}
или
if(last_trade()!=OP_SELL)

{
Условие открытия для Sell
}
Сейчас нужно сделать тоже самое но, отдельно для каждой стратегии т.е. для каждого из 2 магиков.
Заранее спасибо.
 

expforex

Программиров
Всем здравствуйте. Уважаемые программисты , нужна Ваша помощь. Нужно написать функцию для проверки типа последнего закрытого ордера по магику . Раньше когда была 1 стратегия и магик не использовался тип последнего закрытого ордера по валютной паре проверялся функцией
int last_trade()
{
int i,type = -1;
datetime time=0;

for(i=OrdersTotal()-1;i>=0;i--)
{
OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
if(OrderCloseTime()>time )
{

type = OrderType();
time = OrderOpenTime();

}
}

for(i=OrdersHistoryTotal()-1;i>=0;i--)
{
OrderSelect(i,SELECT_BY_POS,MODE_HISTORY);
if(OrderCloseTime()>time )
{

type = OrderType();
time = OrderOpenTime();

}
}
return(type);
}
и потом при открытии ордера
if(last_trade()!=OP_BUY)
{
Условие открытия Buy
}
или
if(last_trade()!=OP_SELL)

{
Условие открытия для Sell
}
Сейчас нужно сделать тоже самое но, отдельно для каждой стратегии т.е. для каждого из 2 магиков.
Заранее спасибо.



Код:
int GetTypeLastClosePos(string sy="", int mn=-1) {
  datetime t;
  int      i, k=OrdersHistoryTotal(), r=-1;

  if (sy=="0") sy=Symbol();
  for (i=0; i<k; i++) {
    if (OrderSelect(i, SELECT_BY_POS, MODE_HISTORY)) {
      if ((OrderSymbol()==sy || sy=="") && (mn<0 || OrderMagicNumber()==mn)) {
        if (OrderType()==OP_BUY || OrderType()==OP_SELL) {
          if (t<OrderCloseTime()) {
            t=OrderCloseTime();
            r=OrderType();
          }
        }
      }
    }
  }
  return(r);
}

sy - символ mn - магик
возвращает тип

Спасибо за спасибо
 

Frolov

Новичок форума
[/CODE]sy - символ mn - магик
возвращает тип

Спасибо за спасибо[/QUOTE]

Огромное СПАСИБО за "скорую помощь" , буду пробовать
 

ivan1234

Новичок форума
PHP код:
double koef = 1000; // в сколько раз увеличивать лот
double lot = 0.01
double clossprofit
= lot * koef // 0.01 * 1000 = 10 ...




ne moglibi vi vstaviti v sov, ato u menea nicevo ne poluciaetsa
traget profit от общего размера лота открытых позиций.
traget profit=TotalLot*koef
 

senyachubar

Прохожий
Нужна помощь программистов.

Здравствуйте уважаемые программисты. Надеюсь на этом форуме мне помогут. Пытаюсь переделать Илан под две стратегии , но я не программист и уперся в одну проблему . - Если запускать советник по одной из стратегий , то все работает . А если запускать советник сразу по двум стратегиям , то не выставляется тейк профит(не модифицируются ордера) и выдает ошибку "zero divide" . На сколько я понимаю проблема в выделенном куске , но как ее исправить не знаю и очень надеюсь на Вашу помощь.
//===================================== Модификация SELL-колен ==================
if(Use_FX_Scalping == TRUE)
{

if(tots>0)
{
double smsell;

for (cnt=0;cnt<OrdersTotal();cnt++)
{
OrderSelect(cnt,SELECT_BY_POS, MODE_TRADES);
if (OrderSymbol() == symbol && OrderType() == OP_SELL && OrderMagicNumber()==Magic1)
{
ticketsell = OrderTicket();OrderSelect(ticketsell,SELECT_BY_TICKET, MODE_TRADES);
smsell+=OrderLots();openpricesell = OrderOpenPrice();lastlotsell = OrderLots(); profitsell+=OrderProfit();
stepS*=Step_coef;
}

}

if(tots==1)
{
tps = NormalizeDouble(Ask-((0-profitsell)/(smsell*TV)+TPsell2)*Point,Digits);
}
else
{
tps = NormalizeDouble(Ask-((0-profitsell)/(smsell*TV)+TPsell)*Point,Digits);
}
mtps = tps;



if (profitsell<=0)
{
if (NormalizeDouble(lastlotsell*mult,dig)<=maxLot && (AccountFreeMarginCheck(Symbol(),OP_SELL,lastlotsell*mult)>0))
{
if(Bid>=openpricesell+MathFloor(stepS)*Point && tots<MaxTrades)
{
lotssell2=lastlotsell*mult;
RefreshRates();
OrderSend(symbol,OP_SELL,NormalizeDouble(lotssell2,dig),NormalizeDouble(Bid,Digits),slippage,0,0,"EA",Magic1,0,Red);

}
}
}
}
}
if(Use_Breakout == TRUE)
{

if(totsB>0)
{
double smsell2;

for (cnt=0;cnt<OrdersTotal();cnt++)
{
OrderSelect(cnt,SELECT_BY_POS, MODE_TRADES);
if (OrderSymbol() == symbol && OrderType() == OP_SELL && OrderMagicNumber()==Magic2)
{
ticketsellB = OrderTicket();OrderSelect(ticketsellB,SELECT_BY_TICKET, MODE_TRADES);
smsell2+=OrderLots();openpricesellB = OrderOpenPrice();lastlotsellB = OrderLots(); profitsellB+=OrderProfit();
stepS*=Step_coef;
}

}

if(totsB==1)
{
tpsB = NormalizeDouble(Ask-((0-profitsellB)/(smsell2*TV2)+TPsell2B)*Point,Digits);
}
else
{
tpsB = NormalizeDouble(Ask-((0-profitsellB)/(smsell2*TV2)+TPsellB)*Point,Digits);

}
mtpsB = tpsB;



if (profitsellB<=0)
{
if (NormalizeDouble(lastlotsellB*mult,dig)<=maxLotB && (AccountFreeMarginCheck(Symbol(),OP_SELL,lastlotsellB*mult)>0))
{
if(Bid>=openpricesellB+MathFloor(stepS)*Point && totsB<MaxTrades)
{
lotssell2B=lastlotsellB*mult;
RefreshRates();
OrderSend(symbol,OP_SELL,NormalizeDouble(lotssell2B,dig),NormalizeDouble(Bid,Digits),slippage,0,0,"EA",Magic2,0,Red);

}
}
}
}
}
 
Последнее редактирование модератором:

donc09

Элитный участник
Кто, чем может помочь. Есть индикатор фракталов. Рисует линии, но не всегда понять это новый фрактал или старый. Просьба модефицировать, чтоб рисовал стрелки.
 

Вложения

senyachubar

Прохожий
Здравствуйте уважаемые программисты. Надеюсь на этом форуме мне помогут. Пытаюсь переделать Илан под две стратегии , но я не программист и уперся в одну проблему . - Если запускать советник по одной из стратегий , то все работает . А если запускать советник сразу по двум стратегиям , то не выставляется тейк профит(не модифицируются ордера) и выдает ошибку "zero divide" . На сколько я понимаю проблема в выделенном куске , но как ее исправить не знаю и очень надеюсь на Вашу помощь.


СПАСИБО. РЕШЕНО
 

Vip_di

Активный участник
Помощь ПРОГРАММИСТА СРОЧНО

Прошу переделать индикатор UltraFatl под MQL4...

UltraFatl
 

ilias00001

Местный житель
помогите переделать индикатор так чтоб в настройках можно было указать валютную пару к которой его применять

#property indicator_separate_window
#property indicator_buffers 3
#property indicator_color1 LimeGreen
#property indicator_color2 Tomato
#property indicator_color3 Yellow

#property indicator_width1 2
#property indicator_width2 2
#property indicator_width3 1

#property indicator_level1 1
#property indicator_level2 0.25
#property indicator_level3 -0.25
#property indicator_level4 -1
#property indicator_levelcolor DarkSlateGray




extern int Price = 6;
extern int Method = 3;
extern int Methodx = 1;


extern bool UseUserVariables = True;
extern int FastPeriod = 11;//21
extern int SlowPeriod = 21;//144
extern int deltax = 1;

extern string notes = "If UseUserVariables set to false, Fast&SlowPeriods are preset for each TF";
extern string price_ = "0C 1O 2H 3L 4Md 5Tp 6WghC: Md(HL/2)4,Tp(HLC/3)5,Wgh(HLCC/4)6";
extern string Method_ = "SMA0 EMA1 SMMA2 LWMA3";

//---- parameters



int per1, per2;
//---- buffers
double up[];
double dn[];
double upx[];
double WorkBuffer[];
double WorkBuffer2[];
double WorkBufferx[];
double WorkBuffer2x[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
int init()
{
//----
if (!UseUserVariables)
{
// for monthly
int mn_per = 12;
int mn_fast = 3;
// for weekly
int w_per = 9;
int w_fast = 3;
// for daily
int d_per = 5;
int d_fast = 3;
// for H4
int h4_per = 12;
int h4_fast = 2;
// for H1
int h1_per = 24;
int h1_fast = 8;
// for M30
int m30_per = 16;
int m30_fast = 2;
// for M15
int m15_per = 16;
int m15_fast = 4;
// for M5
int m5_per = 12;
int m5_fast = 3;
// for M1
int m1_per = 30;
int m1_fast = 10;
//----
}
//----
if (UseUserVariables)
{
per1=FastPeriod;
per2=SlowPeriod;
}
else
{
switch(Period())
{
case 1: per2 = m1_per; per1 = m1_fast; break;
case 5: per2 = m5_per; per1 = m5_fast; break;
case 15: per2 = m15_per; per1 = m15_fast; break;
case 30: per2 = m30_per; per1 = m30_fast; break;
case 60: per2 = h1_per; per1 = h1_fast; break;
case 240: per2 = h4_per; per1 = h4_fast; break;
case 1440: per2 = d_per; per1 = d_fast; break;
case 10080: per2 = w_per; per1 = w_fast; break;
case 43200: per2 = mn_per; per1 = mn_fast; break;
}
}


string Indicator_Name = "Vasily Pip Sniper ZL ("+per1+","+ per2+") ";
//-----
IndicatorBuffers(7);

SetIndexStyle (0, DRAW_LINE);
SetIndexBuffer(0, up);

SetIndexStyle (1, DRAW_LINE);
SetIndexBuffer(1, dn);

SetIndexStyle (2, DRAW_LINE);
SetIndexBuffer(2, upx);


SetIndexBuffer(3, WorkBuffer);
SetIndexBuffer(4, WorkBuffer2);
SetIndexBuffer(5, WorkBufferx);
SetIndexBuffer(6, WorkBuffer2x);

SetIndexDrawBegin(0, per1 + per2);
SetIndexDrawBegin(1, per1 + per2);
SetIndexDrawBegin(2, per1 + per2);

IndicatorShortName(Indicator_Name);

SetIndexLabel(0, "up "+Method );
SetIndexLabel(1, "dn "+Method );

SetIndexLabel(2, "upx "+Methodx );


return(0);
}
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
//----
return(0);
}
//+------------------------------------------------------------------+
//| Custom indicator iteration function |
//+------------------------------------------------------------------+
int start()
{
int limit;
int counted_bars = IndicatorCounted();

//----
if(counted_bars < 0)
return(-1);
//----
if(counted_bars > 0)
counted_bars --;
limit = Bars - counted_bars;
//----
for(int i = 0; i < limit; i++)
{
WorkBuffer = iMA(NULL, 0, per1, 0, Method, Price, i);
WorkBuffer2= iMA(NULL, 0, per2, 0, Method, Price, i);

WorkBufferx = iMA(NULL, 0, per1+deltax, 0, Methodx, Price, i);
WorkBuffer2x= iMA(NULL, 0, per2+deltax, 0, Methodx, Price, i);

}

for(i = 0; i < limit; i++)
{

double wMA, wMA2, lMA, sMA;
double wMAx, wMA2x, lMAx, sMAx;


wMA = iMAOnArray(WorkBuffer, 0, per1, 0, Method, i);
lMA = 2*WorkBuffer-wMA ;

wMA2 = iMAOnArray(WorkBuffer2, 0, per2, 0, Method, i);
sMA = 2*WorkBuffer2-wMA2;



wMAx = iMAOnArray(WorkBufferx, 0, per1, 0, Methodx, i);
lMAx = 2*WorkBufferx-wMAx ;

wMA2x = iMAOnArray(WorkBuffer2x, 0, per2, 0, Methodx, i);
sMAx = 2*WorkBuffer2x-wMA2x;



up =100*(lMA-sMA)/sMA;
upx=100*(lMAx-sMAx)/sMAx;

dn =-1*up;



}
//----
return(0);
}
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+

 

TvikN

Активный участник
Люди добрые,индикатор сбрасывает настройки.Посмотрите,пожалуйста, в чем дело.Большущее спасибо за помощь.
 

Вложения

TvikN

Активный участник
Парни,вынесите,пожалуйста в настройки,настройки вертикальной линии.Нужно 2 индюка в окне,а линии все одинаковые.Путаюсь.Надеюсь на вашу помощь.Для вас это не долго.Спасибо.
 

Вложения

dmitrii398

Новичок форума
уважаемые програмисты! у меня есть сова с дурацкими настройками,так вот он льет безбожно! и у меня возникла идея что если вместо покупки-продавать,и наооборот? тп и сл одинаковые(5и5) сам сов выкладываю.
 

Вложения

  • TesterGraph.gif
    TesterGraph.gif
    7,2 КБ · Просмотры: 58
  • Expert+10.mq4
    Expert+10.mq4
    5,8 КБ · Просмотры: 54
Последнее редактирование:
Статус
Закрыто для дальнейших ответов.

Отслеживают (859) Посмотреть

Верх