Индикаторы: Rabbit - страница 16

 

изменил вид индюка по моему так удобнее смотреть на него....


// Rabbit v28.01.11
// Модификация Martingeil
#property copyright "Jon Katana"
#property indicator_buffers 2
#property indicator_chart_window
extern int   Yesterday    = 0,     //(смещение дней 0-текущ,1-предыдущий итд, -1 будущий)
             Levels       = 7;     //(количество уровней)
extern bool  Sublevel     = false; //(показ подуровней посередине между основными уровнями)
extern color FontColor    = Black,      //(цвет ценовой метки)
             LineColor    = DeepSkyBlue,//(цвет линии)
             MLineColor   = Lime;       //(цвет линии подуровней)
int i,z; double H[],L[],S,R,M; datetime time1, time2, ny_time;
int init(){
SetIndexBuffer(0,H); SetIndexStyle(0,DRAW_NONE);
SetIndexBuffer(1,L); SetIndexStyle(1,DRAW_NONE);
return(0);}
void PlotPrice(string name, double value, double line_color){
double valueN=NormalizeDouble(value,Digits);
bool res = ObjectCreate(name, OBJ_ARROW, 0, time2,valueN);
ObjectSet(name, OBJPROP_COLOR, line_color); ObjectSet(name, OBJPROP_WIDTH, 1);
ObjectSet(name, OBJPROP_ARROWCODE, SYMBOL_RIGHTPRICE);}       
void PlotLine(string name,double value,double value1,double line_color){
double valueN=NormalizeDouble(value,Digits); double valueN1=NormalizeDouble(value1,Digits);
bool res = ObjectCreate(name,OBJ_TREND,0,time1,valueN,time2,valueN1);
ObjectSet(name, OBJPROP_WIDTH, 0);
ObjectSet(name, OBJPROP_STYLE, 0); ObjectSet(name, OBJPROP_RAY, false);
ObjectSet(name, OBJPROP_BACK, true); ObjectSet(name, OBJPROP_COLOR, line_color);} 
int start(){
ny_time  = iTime(NULL,PERIOD_D1,0) + (0-Period()/60.0)*3600;
time1 = ny_time + Period()*60; time2 = ny_time + 24*3600+Period()*60 ;
H[i]=iHigh(NULL,PERIOD_D1,Yesterday+1); L[i]=iLow(NULL,PERIOD_D1,Yesterday+1);
S=(H[0]-L[0])*0.236;
Comment("\n"," Today  =  " + TimeToStr(TimeCurrent()),"ч.","\n"," Step = ",DoubleToStr(S,Digits)); 
for(z=0;z<Levels*2;z++) {R=L[0]+(H[0]-L[0])*(0.618-Levels*0.236)+S*z;PlotLine("R"+z,R,R,LineColor);
PlotPrice("Rp"+z, R,FontColor);}
if (Sublevel==true){
for(z=0;z<(Levels*2-1);z++){M=L[0]+(H[0]-L[0])*(0.618-Levels*0.236)+S*z+S*0.5;
PlotLine("M Line"+z,M,M,MLineColor); PlotPrice("Rm"+z,M,FontColor); }}
return(0);}
int deinit(){for(z=0;z<Levels*2;z++){ObjectDelete("R"+z);ObjectDelete("S");ObjectDelete("R Line"+z);
ObjectDelete("Rp"+z);ObjectDelete("M Line"+z); ObjectDelete("Rm"+z);} return(0);}
 

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

Спасибо.

 
два брокера - архивы котировок подкачаны - степ немного отличается - например у одного 0.00371 RL20 1.42491 у второго 0.00374 1.42486... что за .. и что на это влияет?
 
Ни на что - у них разные дилинговые центры. Используйте свою копию Rabbit на каждом архиве котировок.
 

The One - торговая стратегия с использованием индикатора Rabbit. Утром, в период c 6:30 до 7:30 на ближайших к цене уровнях Rabbit выставляются два отложенных перевернутых ордера Sell Limit и Buy Limit с Take Profit и Stop Loss размером в Step. После открытия одного из них другой ордер убирается.


 
Сделайте пож. для версии Rabbit v06.06.11, что бы можно было менять день показа индикатора (именно можно было выставить день -1 предыдущий, -2 -3 -4 -5... до - 50 было бы замечательно, соответственно) и чтобы линии не выходили за границы дня, - как сделал - 12.03.2011 23:07 Martingeil для версии Rabbit v28.01.11. Спасибо.
 
Спасибо!!! если бы еще можно было выставить просмотр на n дней назад просмотр для каждого дня соответствующий уровень - вот главное... ))) да.. спс!!
 

Нужна помощь для встраивания советника Кима e-OCO в тестер Rabbit'а (сообщение grandmaster в этой теме от 02.01.2011) для прогона по истории последней стратегии The One. Код e-OCO:

//+----------------------------------------------------------------------------+
//|                                                                 e-OCO.mq4  |
//|                                                                            |
//|  Идея      : Хуан Занозин                                                  |
//|              http://community.finlist.org/showthread.php?t=2273            |
//|  Реализация: Ким Игорь В. aka KimIV, http://www.kimiv.ru                   |
//|                                                                            |
//|  12.07.2007  One Cancel Others - Один отменяет другие.                     |
//|              Советник следит за появлением позиции.                        |
//|              Как только позиция появляется, удаляет все ордера.            |
//|              Позиция может появиться либо после входа по рынку,            |
//|              либо после срабатывания отложенного ордера.                   |
//+----------------------------------------------------------------------------+
#property copyright "Хуан Занозин & KimIV"
#property link      "http://www.kimiv.ru"
extern string _P_Expert = "---------- Параметры советника";
extern int    NumberAccount   = 0;               // Номер торгового счёта
extern bool   UseSound        = False;           // Использовать звуковой сигнал
extern string NameFileSound   = "expert.wav";    // Наименование звукового файла
extern int    Slippage        = 3;               // Проскальзывание цены
extern int    NumberOfTry     = 5;               // Количество попыток
extern int    PauseAfterError = 75;              // Пауза после ошибки в секундах
//------- Глобальные переменные советника --------------------------------------
color clDelete = Yellow;               // Цвет значка удаления ордера
//------- Подключение внешних модулей ------------------------------------------
#include <stdlib.mqh>
//+----------------------------------------------------------------------------+
//|  expert initialization function                                            |
//+----------------------------------------------------------------------------+
void init() { if (!IsTesting()) Comment(""); }
//+----------------------------------------------------------------------------+
//|  expert deinitialization function                                          |
//+----------------------------------------------------------------------------+
void deinit() { if (!IsTesting()) Comment(""); }
//+----------------------------------------------------------------------------+
//|  expert start function                                                     |
//+----------------------------------------------------------------------------+
void start() {
  if (NumberAccount>0 && NumberAccount!=AccountNumber()) {
    Comment("Торговля на счёте: "+AccountNumber()+" ЗАПРЕЩЕНА!");
    return;
  }
  if (ExistPositions()) DeleteOrders();
}
//+----------------------------------------------------------------------------+
//|  Удаление ордеров                                                          |
//|  Параметры:                                                                |
//|    sy - наименование инструмента   ("" - текущий символ)                   |
//|    op - операция                   (-1 - любой ордер)                      |
//|    mn - MagicNumber                (-1 - любой магик)                      |
//+----------------------------------------------------------------------------+
void DeleteOrders(string sy="", int op=-1, int mn=-1) {
  bool fd;
  int  err, i, it, k=OrdersTotal(), ot;
  if (sy=="") sy=Symbol();
  for (i=k-1; i>=0; i--) {
    if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
      ot=OrderType();
      if (ot==OP_BUYLIMIT || ot==OP_BUYSTOP || ot==OP_SELLLIMIT || ot==OP_SELLSTOP) {
        if (OrderSymbol()==sy && (op<0 || ot==op)) {
          if (mn<0 || OrderMagicNumber()==mn) {
            for (it=1; it<=NumberOfTry; it++) {
              if (!IsTesting() && (!IsExpertEnabled() || IsStopped())) break;
              while (!IsTradeAllowed()) Sleep(5000);
              fd=OrderDelete(OrderTicket(), clDelete);
              if (fd) {
                if (UseSound) PlaySound(NameFileSound); break;
              } else {
                err=GetLastError();
                Print("Error(",err,") delete order ",GetNameOP(ot),": ",ErrorDescription(err),", try ",it);
                Sleep(1000*PauseAfterError);
              }
            }
          }
        }
      }
    }
  }
}
//+----------------------------------------------------------------------------+
//|  Возвращает флаг существования позиций                                     |
//|  Параметры:                                                                |
//|    sym - наименование инструмента ("" - текущий символ)                    |
//|    op  - операция                 (-1 - любая позиция)                     |
//|    mn  - MagicNumber              (-1 - любой магик)                       |
//+----------------------------------------------------------------------------+
bool ExistPositions(string sym="", int op=-1, int mn=-1) {
  int i, k=OrdersTotal();
  if (sym=="") sym=Symbol();
  for (i=0; i<k; i++) {
    if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
      if (OrderSymbol()==sym) {
        if (OrderType()==OP_BUY || OrderType()==OP_SELL) {
          if (op<0 || OrderType()==op) {
            if (mn<0 || OrderMagicNumber()==mn) return(True);
          }
        }
      }
    }
  }
  return(False);
}
//+----------------------------------------------------------------------------+
//|  Возвращает наименование торговой операции                                 |
//|  Параметры:                                                                |
//|    op - идентификатор торговой операции                                    |
//+----------------------------------------------------------------------------+
string GetNameOP(int op) {
        switch (op) {
                case OP_BUY      : return("Buy");
                case OP_SELL     : return("Sell");
                case OP_BUYLIMIT : return("Buy Limit");
                case OP_SELLLIMIT: return("Sell Limit");
                case OP_BUYSTOP  : return("Buy Stop");
                case OP_SELLSTOP : return("Sell Stop");
                default          : return("Unknown Operation");
        }
}
//+----------------------------------------------------------------------------+
 
Заказ снят - результаты получены.
 

Diablo v09.02.12 (Immortal Version)

На ближайших к цене уровнях Rabbit c промежутком в Step выставляются ордера двух типов: прямые (Buy Stop вверх от цены и Sell Stop вниз от цены) и перевернутые (Sell Limit вверх от цены и Buy Limit вниз от цены). Ордера Buy Stop и Sell Limit ставятся на одинаковых уровнях (попарно), как и ордера Sell Stop и Buy Limit.

Все ордера имеют одинаковый объем и Stop Loss равный шагу между ордерами Step.

У прямых (Buy Stop и Sell Stop) ордеров нет Take Profit. У перевернутых (Sell Limit и Buy Limit) ордеров Take Profit нарастающий арифметически: у первого (ближайшего к цене) ордера равен одному шагу между ордерами, у второго (чуть более удаленного) - трем шагам, у третьего - пяти и так далее.


Скрипт для выставления ордеров:

// Diablo v09.02.12
#property copyright "Jon Katana"
#property show_inputs
extern int Step=0,Spread=0,Levels=0;
extern double Up=0,Vol=0;
int start()
{for(int i=0;i<(Levels);i++)
{OrderSend(Symbol(),OP_BUYSTOP,Vol,Up+(i*Step+Spread)*Point,0,Up+(i-1)*Step*Point,0,0,0);
OrderSend(Symbol(),OP_SELLSTOP,Vol,Up-(i+1)*Step*Point,0,Up-(i*Step-Spread)*Point,0,0,0);
OrderSend(Symbol(),OP_SELLLIMIT,Vol,Up+i*Step*Point,0,Up+((i+1)*Step+Spread)*Point,Up-(Step*(i+1)+Spread)*Point,0,0);
OrderSend(Symbol(),OP_BUYLIMIT,Vol,Up-((i+1)*Step-Spread)*Point,0,Up-(i+2)*Step*Point,Up+i*Step*Point,0,0);}
return(0);}

Система полностью неубиваемая. Предоставленная сама себе, в итоге всегда закрывается с прибылью или в нуле.

Очень хорош тренд без откатов на размер шага - прибыль нарастает как снежный ком, позволяя собрать одно движение цены несколько раз. На флете заработок умеренный, либо выходит в ноль. Самый медленный вариант - паттерн "дракон", когда цена движется в одну сторону, но откатывает от каждого уровня назад на один шаг, после чего идет дальше. В этом случае потребуется просто чуть больше времени на выход в прибыль или ноль.

Можно оставлять схему без присмотра, главное, чтобы цена не вышла за пределы уровней, на которых стоят ордера. Другой вариант - слежение за Diablo и закрытие по достижении некоторой прибыли (например, размером в один шаг) с последующей перестановкой ордеров заново, либо просто однократное закрытие с прибылью.
Причина обращения: