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

Статус
Закрыто для дальнейших ответов.
Получить значение buffer1[1] можно так:
PHP:
double valueVolatility  = iCustom(Symbol(),0,"volatility",MaPriod,value,0,1);
где MaPriod,value - входные данные индикатора
 
Получить значение buffer1[1] можно так:
PHP:
double valueVolatility  = iCustom(Symbol(),0,"volatility",MaPriod,value,0,1);
где MaPriod,value - входные данные индикатора

Да этот способ знаю..просто думаю как сделать саму функцию, чтобы она определяла значение buffer1[1]

У функции решил посмотреть
buffer1=buffer2; и проверяю это строчкой
Comment("\n","Мой_buffer1=",buffer1[1],"\n",iCustom(Symbol(),0, "Volatility", 34,0.5,0,1),"\n",MathAbs(iCustom(Symbol(),0, "Volatility", 34,0.5,0,1)-buffer1[1]));
то разница ноль как и должна быть и все хорошо

Если написать в функции
buffer1 = iMAOnArray(buffer2, 0, 34, 0, MODE_EMA, i);
то есть рассагласованиеот нуля
в строке
MathAbs(iCustom(Symbol(),0, "Volatility", 34,0.5,0,1)-buffer1[1]
Почему??o_o
помогите понять
 
строчку buffer1=buffer2; - писал тестовую, и в индикаторе и в своей ф-ии и понятно, что эта строчка сидит в цикле по всем i.

Непонятно что делает ф-ия iMAOnArray с массивом buffer2 что при сравнении
MathAbs(iCustom(Symbol(),0, "Volatility", 34,0.5,0,1)-buffer1[1]) это не ноль
Здесь buffer1[1] - из моей ф-ии.
 
Хочу переложить свойства индикатора Votality в советник без iCustom)
 
переделать надо(сам знаю что программист нужен) кто возьмется помочь

есть данный робот.кто возьмется переделать его.так чтобы отложенные ордера он держал в "уме" невидимые.по факту( на реале.устраивают проскальзывание на проскальзывание.нужно как в илане.чтобы ордера рыночные становились сразу из "памяти".в личку.если кому есть что сказать и кто заинтересован*hi*
 

Вложения

Понял просто ф-ия iMAOnArray переворачивает массив. Если же применить просто сглаживание ф-ии например как buffer1 = 0.2 *buffer2[i - 1] + 0.6 *buffer2 + 0.2*buffer2[i + 1]; тогда все норм. А с функцией iMAOnArray пока не разобрался..
 
Понял просто ф-ия iMAOnArray переворачивает массив. Если же применить просто сглаживание ф-ии например как buffer1 = 0.2 *buffer2[i - 1] + 0.6 *buffer2 + 0.2*buffer2[i + 1]; тогда все норм. А с функцией iMAOnArray пока не разобрался..

Глянь.
 

Вложения

Вот верное решение

double Koef = 2.0/(MaPriod + 1);
for (i = limit - 1; i >= 0; i--)
{
if (i < Bars - 1 && buffer1 == EMPTY_VALUE) buffer1 = buffer2;

buffer1 = buffer2*Koef + buffer1[i + 1]*(1 - Koef);
}

И вот ссылка где указывается что ф-ия iMAOnArray работает неправильно
_http://forum.mql4.com/ru/30802
 
Последнее редактирование модератором:
Закрывает по стопу и на той же свече открывает новый ордер?
Я бы сказал что это невозможно. Но если ты покажешь скрин то будем думать.

залил.
суть такая открыв ордер по сигналу, то закрывшись по тейкпрофиту, он снова открывается(
 

Вложения

  • gbpusdm2.jpg
    gbpusdm2.jpg
    119,5 КБ · Просмотры: 73
Здравствуйте программисты ! Нужна ваша помощь. Мне нужен такой советник, который просто издаёт звуковой сигнал и сообщение, после выполнения определённых условий.
Условия такие: ставим советника на любой таймфрейм, и он начинает следить за барами. При движении цены в одну сторону (вверх или вниз), советник отсчитывает определённое количество баров, и при появлении очередного бара - издаёт звуковой сигнал (призывая меня к компьютеру). И чтобы в настройках можно было выставлять количество баров и их размер (от цены открытия до цены закрытия).
Например: ставлю советника на пятиминутный таймфрейм, задаю размер баров не менее 10 пунктов, задаю чтобы прошло 3 бара (в одну сторону) и при открытии четвёртого прозвучал сигнал и вышло сообщение (например: валюта такая то - 3 бара). И чтобы советник дальше продолжал следить за рынком. И чтобы я мог
поставить такого советника одновременно на разные валюты.

Заранее большое спасибо !
 
Здравствуйте программисты ! Нужна ваша помощь. Мне нужен такой советник, который просто издаёт звуковой сигнал и сообщение, после выполнения определённых условий.
Условия такие: ставим советника на любой таймфрейм, и он начинает следить за барами. При движении цены в одну сторону (вверх или вниз), советник отсчитывает определённое количество баров, и при появлении очередного бара - издаёт звуковой сигнал (призывая меня к компьютеру). И чтобы в настройках можно было выставлять количество баров и их размер (от цены открытия до цены закрытия).
Например: ставлю советника на пятиминутный таймфрейм, задаю размер баров не менее 10 пунктов, задаю чтобы прошло 3 бара (в одну сторону) и при открытии четвёртого прозвучал сигнал и вышло сообщение (например: валюта такая то - 3 бара). И чтобы советник дальше продолжал следить за рынком. И чтобы я мог
поставить такого советника одновременно на разные валюты.

Заранее большое спасибо !
Сложно.
 
дописать код

Уважаемые программисты! Начал использовать систему с элементами мартина. При тестировании случаются сливы.
Как модернизировать ее, чтобы после убыточной сделки, открывался удвоенный лот. Например: открылся ордер на покупку 0.1, затем 0.2, но и далее цена пошла не в моем направлении. Нужно, чтобы после закрытия сделок с убытком, следующий ордер по алгоритму системы первый ордер открывался лотом 0.2, а второй 0.4. Ниже размещаю блок Buy. Кто то поможет внести в код соответствующие дополнения?

double Lots_all=0;
double near_ord_price=999999;
int step_=0;
int lotsum_=0;

// calculate summe lots and last order open price
for (int i=OrdersTotal()-1; i >= 0; i--)
{
if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
{
if (OrderType() == OP_BUY && OrderSymbol() == Symbol() && OrderMagicNumber() == Magic_b)
{

if ( near_ord_price > OrderOpenPrice() )
{ near_ord_price = OrderOpenPrice(); }

if ( Lots_all < OrderLots() )
{ Lots_all = OrderLots(); }

lotsum_ +=1;

}}
else
{
Print("OrderSelect() error - ", ErrorDescription(GetLastError()));
}}
// *************************calculate and open buy order *****************************


step_=Step_Order_b;

if ( lotsum_ >= StartStepExp_b ) { step_ = NormalizeDouble(step_ * MathPow(StepExp_b ,((lotsum_+1) - StartStepExp_b)),0); }



if (near_ord_price - Ask > step_*PipValue*Point && near_ord_price != 999999 )



{ double new_lot = NormalizeDouble((Lots_all*Multipler_b) ,2);


if ( new_lot==Lots_all && Multipler_b!= 1 ) { new_lot=Lots_all+Lots_all; }

if (lotsum_ < StartExp_b ) { new_lot=Lot_b; }

int ticket = OrderSend(Symbol(), OP_BUY, new_lot, Ask, 2, 0, 0, "double force", Magic_b, 0, Blue);

{ if ( ticket == -1 ) { Print("OrderSend() error - ", ErrorDescription(GetLastError())); }
}
// *******************************calculate TP ******************
double Lots_al=0;
double Average_lp=0;
double Average_tp=0;
for ( i=OrdersTotal()-1; i >= 0; i--)
{
if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
{
if (OrderType() == OP_BUY && OrderSymbol() == Symbol() && OrderMagicNumber() == Magic_b)
{
Lots_al += OrderLots();
Average_lp +=(OrderLots()*OrderOpenPrice());
}
}
else
{
Print("OrderSelect() error - ", ErrorDescription(GetLastError()));
}}
//************************************************
Average_tp= NormalizeDouble(Average_lp/Lots_al,Digits);
Average_tp=Average_tp+(TP_Average_b*PipValue*Point);
// ********************** modify order *************************
double modify_sl=0;
double modify_tp=0;

for ( i=OrdersTotal()-1; i >= 0; i--)
{
if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
{
if (OrderType() == OP_BUY && OrderSymbol() == Symbol() && OrderMagicNumber() == Magic_b)
{ if ( Average_tp < Ask ) {modify_sl=Average_tp; modify_tp=0; }
else
{ modify_sl=0; modify_tp=Average_tp; }

bool ret = OrderModify(OrderTicket(), OrderOpenPrice(), modify_sl, modify_tp, 0, Yellow);
if (ret == false)
Print("OrderModify() error - ", ErrorDescription(GetLastError()));

}}
else
{
Print("OrderSelect() error - ", ErrorDescription(GetLastError()));
}}}
 
Последнее редактирование модератором:
Уважаемые программисты! Начал использовать систему с элементами мартина. При тестировании случаются сливы.
Как модернизировать ее, чтобы после убыточной сделки, открывался удвоенный лот. Например: открылся ордер на покупку 0.1, затем 0.2, но и далее цена пошла не в моем направлении. Нужно, чтобы после закрытия сделок с убытком, следующий ордер по алгоритму системы первый ордер открывался лотом 0.2, а второй 0.4. Ниже размещаю блок Buy. Кто то поможет внести в код соответствующие дополнения?
...
http://forexsystemsru.com/indikatory/69427-indikatory-ot-eevviill-5.html#post596494
martini on last order
 
Ребята помогите этот шаблон работает только на евро/долоре сделайте чтоб он работал на всех парах .
 

Вложения

???

Да вроди не должен рисовать.
Попробуйте вырезать
PHP:
 b2=b*b;
   b3=b2*b;
   c1=-b3;
   c2=(3*(b2+b3));
   c3=-3*(2*b2+b+b3);
   c4=(1+3*b+b3+3*b2);
   n=t3_period;

   if (n<1) n=1;
   n = 1 + 0.5*(n-1);
   w1 = 2 / (n + 1);
   w2 = 1 - w1;
и вставить после
PHP:
int init()
  {

Уточните пожалуйста, в какое место вставить int init()
{ ?
 
Статус
Закрыто для дальнейших ответов.

Посмотрели (165) Посмотреть

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

Назад
Верх