Проект Валерия Мальцева » Обсуждение торговых стратегий » Обсуждение торговой системы "Sat2004"
+ Подписаться
  1. 512
    Комментарии
    4
    Темы
    514
    Репутация Pro
     
    В начале пути

    2 Медалей

    Обсуждение торговой системы "Sat2004"

    Здравствуйте!!!
    Стратегию модернизировал.
    Спасибо.
    Недоступно! Pro 0
    Поделиться
    Просмотров: 1,085
  2. 512
    Комментарии
    4
    Темы
    514
    Репутация Pro
     
    В начале пути

    2 Медалей
    В новом изложении ТС введено понятие "Цена (линия) максимального объема".
    За весь день анализируется объем торгов и выбирается цена, по которой проходили торги с максимальным объемом.
    Для этого был разработан индикатор, который визуализирует объмы торгов по ценам с дискретностью 5 пунктов.
  3. 512
    Комментарии
    4
    Темы
    514
    Репутация Pro
     
    В начале пути

    2 Медалей
    Выполнен норматив 1 месяца торговли.
    Были случайные две сделки с объемом 0.4 лота вместо минимального 1 лота.
    Это, ошибка вызвана из-за участия в 3 конкурсах.
    На сегодня нет сомнений как устанавливать профит. Линия максимального объема (ЛМО) очень часто указывает значение профита.
  4. 19,638
    Комментарии
    291
    Темы
    -42179
    Репутация Pro
    Аватар для Алексей Васильев (мошенник)  
    ОСТОРОЖНО МОШЕННИК!

    8 Медалей
    Цитата Сообщение от sat2004 Посмотреть сообщение
    В новом изложении ТС введено понятие "Цена (линия) максимального объема".
    За весь день анализируется объем торгов и выбирается цена, по которой проходили торги с максимальным объемом.
    Для этого был разработан индикатор, который визуализирует объмы торгов по ценам с дискретностью 5 пунктов.
    ...подскажите, а где Вы берете информацию об объемах?
  5. 512
    Комментарии
    4
    Темы
    514
    Репутация Pro
     
    В начале пути

    2 Медалей
    Есть функция в MQL4, которая предоставляет объем.
    Один из вариантов индикатора без комментария.
    Это мой первый код в MQL4.
    //+------------------------------------------------------------------+
    //| sat2004_i_3.mq4 |
    //| Copyright © 2010, MetaQuotes Software Corp. |
    //| http://www.metaquotes.net |
    //+------------------------------------------------------------------+
    #property copyright "Copyright © 2010,sat2004."
    #property link "http://www.metaquotes.net"

    #property indicator_separate_window
    //#property indicator_chart_window
    #property indicator_minimum 0
    #property indicator_maximum 5000
    #property indicator_buffers 5
    #property indicator_color1 Lime
    #property indicator_color2 Red
    #property indicator_color3 Blue
    #property indicator_color4 Green
    #property indicator_color5 Yellow



    //+------------------------------------------------------------------+
    //| Custom indicator initialization function |
    //+------------------------------------------------------------------+
    extern int Per1=60;
    extern int Par1=0;

    extern double Pred=2.2;

    double Bf1[];
    double Bf2[];
    double Bf3[];
    double Bf4[];
    double Bf5[];

    double ma,ma1,ma2,ma21=0;
    datetime dt1;
    bool bl1;
    int handle;
    string name,sm;
    int k=0;
    int i,m=0;
    string nm1="MO1_";
    string nm2;
    int l=0;
    double zn,zn1,zn2,zn3,znm,zn3d,prc=0.0;
    int k2=0;
    int kfp=20;
    double kf=0.05; // Для 2 знаков после запятой
    int init()
    {
    IndicatorBuffers(5);


    sm=Symbol();

    handle=FileOpen("s_"+StringTrimRight(sm)+".DAT",FI LE_BIN|FILE_READ|FILE_WRITE);


    //---- indicators
    name="sat2004_i_3("+Per1+")";
    IndicatorShortName(name);
    SetIndexLabel(0,name);

    //---- Линия индикатора
    SetIndexStyle(0,DRAW_LINE,STYLE_SOLID,1,Lime);
    SetIndexStyle(1,DRAW_LINE,STYLE_SOLID,1,Red);
    SetIndexStyle(2,DRAW_LINE,STYLE_SOLID,1,Blue);
    SetIndexStyle(3,DRAW_LINE,STYLE_SOLID,1,Green);
    SetIndexStyle(3,DRAW_LINE,STYLE_SOLID,1,Green);

    SetIndexBuffer(0,Bf1);
    SetIndexBuffer(1,Bf2);
    SetIndexBuffer(2,Bf3);
    SetIndexBuffer(3,Bf4);
    SetIndexBuffer(4,Bf5);


    SetIndexDrawBegin(0,Per1);
    SetIndexDrawBegin(1,Per1);
    SetIndexDrawBegin(2,Per1);
    SetIndexDrawBegin(3,Per1);
    SetIndexDrawBegin(4,Per1);



    //----
    return(0);
    }
    //+------------------------------------------------------------------+
    //| Custom indicator deinitialization function |
    //+------------------------------------------------------------------+
    int deinit()
    {
    FileClose(handle);
    return(0);
    }
    //+------------------------------------------------------------------+
    //| Custom indicator iteration function |
    //+------------------------------------------------------------------+
    int start()
    {
    int k=0;
    int i,m,counted_bars=IndicatorCounted();
    string nm1="MO1_";
    string nm2;
    m=0;
    znm=iLow(NULL,PERIOD_D1,0);
    zn3d=iVolume(NULL,PERIOD_D1,0);
    int per= Period();
    switch(per)
    {
    case 1:kfp=1; break;
    case 5:kfp=3; break;
    case 15:kfp=9; break;
    case 30:kfp=14; break;
    case 60:kfp=18; break;
    case 240:kfp=72;break;
    case 1440:kfp=144; break;
    }
    per=Digits;
    switch(per)
    {
    case 0:kfp=1; break;
    case 1:kf=5; break;
    case 2:kf=0.05; break;
    case 4:kf=0.0005; break;
    }

    //----
    l++;

    i=Hour()-8;
    if (i<0) return(0);
    int i1=Minute();
    i=i*60+i1-1;
    for (k=0;k<i+1;k++)
    Bf1[k]=0;


    while(i>=0)
    {
    // Print (" i=",i);
    zn1=iHigh(NULL,PERIOD_M1,i);
    zn2=iLow(NULL,PERIOD_M1,i);
    zn3=iVolume(NULL,PERIOD_M1,i);
    zn=(zn1+zn2)/2;
    k=(zn-znm)/kf;
    if (k2<k)
    k2=k;

    Bf1[k]+=zn3;

    i--;
    }
    int k1=0;
    ma =Bf1[0];
    for (k=1;k<k2;k++)
    if (ma<Bf1[k])
    {
    k1=k;
    ma=Bf1[k];
    }
    // Print(k1," ",ma);
    ma2=znm+(k1+1)*kf;



    if (l>2)
    if ((ma2!=ma1)||((MathMod(Minute(),5)==0)&& (Seconds()<=5)))
    {
    ObjectsDeleteAll(0,2);
    nm2="MO_"+Month()+"_"+Day();
    ObjectDelete(nm2);
    ObjectCreate(nm2,1,0,NULL,ma2);
    ObjectSet(nm2,OBJPROP_BACK,true);
    ObjectSetText(nm2,DoubleToStr(ma, 0)+"("+DoubleToStr((iHigh(NULL,PERIOD_D1,0)/iLow(NULL,PERIOD_D1,0)-1)*100, 2)+")"+"_"+DoubleToStr(zn3d,0), 10, "Times New Roman", Green);
    sm=Symbol();

    FileWriteDouble(handle, ma);
    FileWriteDouble(handle, ma2);
    FileWriteString(handle, sm, 6);
    FileWriteString(handle, nm2, 10);




    if (ma2<Bid)
    ObjectSet(nm2,OBJPROP_COLOR,Lime);

    dt1=TimeCurrent()+(Period()+10)*60;
    m=(iHigh(NULL,PERIOD_D1,0)-iLow(NULL,PERIOD_D1,0))/kf;

    for (k=0;k<m;k++)
    {
    if (Bf1[k]>0)
    {
    prc=Bf1[k]/zn3d*100;
    nm2=nm1+k;

    ma21=znm+(k+1)*kf;


    ObjectCreate(nm2,2,0,dt1,ma21,dt1+Bf1[k]*kfp,ma21);
    ObjectSet(nm2,OBJPROP_COLOR,Gold);
    ObjectSet(nm2,OBJPROP_RAY,false);
    ObjectSetText(nm2,DoubleToStr(Bf1[k],0)+"_("+DoubleToStr(prc,1)+")", 10, "Times New Roman", Green);

    }
    }

    ma1=ma2;


    if (Par1==1)
    {

    //***************************** 2010.07.22


    datetime nach_d =D'2010.07.22 00:00';
    int nach=iBarShift(NULL,PERIOD_M1,nach_d);
    datetime kon_d =D'2010.07.22 23:59';
    int kon=iBarShift(NULL,PERIOD_M1,kon_d);

    m=0;
    znm=iLow(NULL,PERIOD_D1,2);
    Print("znm=",znm," kon=",kon," nach=",nach," ",nach_d);

    for (i=0;i<1440;i++)
    Bf2[i]=0;
    for (i=kon;i<nach;i++)
    {
    zn1=iHigh(NULL,PERIOD_M1,i);
    zn2=iLow(NULL,PERIOD_M1,i);
    zn3=iVolume(NULL,PERIOD_M1,i);
    zn=(zn1+zn2)/2;
    k=(zn-znm)/kf;
    Bf2[k]+=zn3;

    }
    Print(Bf2[10]," ",Bf2[10]," ",Bf2[11]," ",Bf2[12]," ",Bf2[13]);

    //***************************** 2010.07.23


    nach_d =D'2010.07.23 00:00';
    nach=iBarShift(NULL,PERIOD_M1,nach_d);
    kon_d =D'2010.07.23 23:59';
    kon=iBarShift(NULL,PERIOD_M1,kon_d);

    m=0;
    znm=iLow(NULL,PERIOD_D1,1);
    Print("znm=",znm," kon=",kon," nach=",nach," ",nach_d);

    for (i=0;i<1440;i++)
    Bf3[i]=0;
    for (i=kon;i<nach;i++)
    {
    zn1=iHigh(NULL,PERIOD_M1,i);
    zn2=iLow(NULL,PERIOD_M1,i);
    zn3=iVolume(NULL,PERIOD_M1,i);
    zn=(zn1+zn2)/2;
    k=(zn-znm)/kf;
    Bf3[k]+=zn3;

    }
    Print(Bf3[10]," ",Bf3[10]," ",Bf3[11]," ",Bf3[12]," ",Bf3[13]);

    //***************************** 2010.07.21


    nach_d =D'2010.07.21 00:00';
    nach=iBarShift(NULL,PERIOD_M1,nach_d);
    kon_d =D'2010.07.21 23:59';
    kon=iBarShift(NULL,PERIOD_M1,kon_d);

    m=0;
    znm=iLow(NULL,PERIOD_D1,3);
    Print("znm=",znm," kon=",kon," nach=",nach," ",nach_d);

    for (i=0;i<1440;i++)
    Bf4[i]=0;
    for (i=kon;i<nach;i++)
    {
    zn1=iHigh(NULL,PERIOD_M1,i);
    zn2=iLow(NULL,PERIOD_M1,i);
    zn3=iVolume(NULL,PERIOD_M1,i);
    zn=(zn1+zn2)/2;
    k=(zn-znm)/kf;
    Bf4[k]+=zn3;

    }
    Print(Bf4[10]," ",Bf4[10]," ",Bf4[11]," ",Bf4[12]," ",Bf4[13]);

    //***************************** 2010.07.21


    nach_d =D'2010.07.20 00:00';
    nach=iBarShift(NULL,PERIOD_M1,nach_d);
    kon_d =D'2010.07.20 23:59';
    kon=iBarShift(NULL,PERIOD_M1,kon_d);

    m=0;
    znm=iLow(NULL,PERIOD_D1,4);
    Print("znm=",znm," kon=",kon," nach=",nach," ",nach_d);

    for (i=0;i<1440;i++)
    Bf5[i]=0;
    for (i=kon;i<nach;i++)
    {
    zn1=iHigh(NULL,PERIOD_M1,i);
    zn2=iLow(NULL,PERIOD_M1,i);
    zn3=iVolume(NULL,PERIOD_M1,i);
    zn=(zn1+zn2)/2;
    k=(zn-znm)/kf;
    Bf5[k]+=zn3;

    }
    Print(Bf5[10]," ",Bf5[10]," ",Bf5[11]," ",Bf5[12]," ",Bf5[13]);
    }
    }
    SetIndexDrawBegin(1,Per1);
    SetIndexDrawBegin(0,Per1);
    SetIndexDrawBegin(2,Per1);
    SetIndexDrawBegin(3,Per1);
    //----
    return(0);
    }
    //+------------------------------------------------------------------+

Вверх
РегистрацияX

чтобы писать, читать, комментировать