[ARŞİV!] Forumu kirletmemek için herhangi bir acemi sorusu. Profesyonel, kaçırmayın. Sensiz hiçbir yerde - 4. - sayfa 123

 

sondaki durdurma ve başabaş çıktı nereye eklenir? ve mevduat arttığında bir şey lotu artırmaz

///////////////////////////////////////////// //////////////////////////////////////////// // /////////////////////////////////////////// /// //////////

int Satın Al (int StopLoss = 0, int TakeProfit = 0, çift Parti = 0)

{

int bilet = 0;

çift SL = 0;

çift TP = 0;

çiftHacimLot = 0;

Yeniler();

eğer (Kaybı Durdur != 0)

SL = NormalizeDouble (Teklif-StopLoss*Puan, Rakamlar);

if (TakeProfit != 0)

TP = NormalizeDouble(Sor+TakeProfit*Puan, Rakamlar);

if (Lot == 0)

VolumeLot = GetLot();

başka

Hacim Parti = Parti;

Bilet = OrderSend(Symbol(), OP_BUY, VolumeLot, NormalizeDouble(Ask, Digits), 20, SL, TP, NULL, AccountNumber(), 0, Green);

if (Bilet == -1)

{

dönüş(GetLastError());

}

başka

{

bilet iadesi);

}

}

int Satış (int StopLoss = 0, int TakeProfit = 0, çift Parti = 0)

{

int bilet = 0;

çift SL = 0;

çift TP = 0;

çiftHacimLot = 0;

Yeniler();

eğer (Kaybı Durdur != 0)

SL = NormalizeDouble(Sor+StopLoss*Puan, Rakamlar);

if (TakeProfit != 0)

TP = NormalizeDouble(Teklif Al-Kar*Puan, Rakamlar);

if (Lot == 0)

VolumeLot = GetLot();

başka

Hacim Parti = Parti;

Bilet = OrderSend(Symbol(), OP_SELL, VolumeLot, NormalizeDouble(Bid, Digits), 20, SL, TP, NULL, AccountNumber(), 0, Red);

if (Bilet == -1)

dönüş(GetLastError());

başka

bilet iadesi);

}

çift GetLot()

{

int lotu;

if (AccountBalance()>=300) lot=0.01;

if (AccountBalance()>=500) lot=0.02;

if (AccountBalance()>=800) lot=0.03;

dönüş(lot);

}

 
mahla :

sondaki durdurma ve hatta çıktının kesilmesi nereye eklenir? ve mevduat arttığında bir şey lotu artırmaz

///////////////////////////////////////////// //////////////////////////////////////////// // /////////////////////////////////////////// /// //////////

bir danışmanda

 //+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start()
  {
//----
   
//----
   return ( 0 );
  }
//+------------------------------------------------------------------+

Parti artırma işlevi ...... muhtemelen değiştirmek daha iyi

misal:

 extern double Lots               = 0.1 ;
extern double MaximumRisk        = 0.02 ;
extern double DecreaseFactor     = 3 ;
//////
//+------------------------------------------------------------------+
//| Calculate optimal lot size                                       |
//+------------------------------------------------------------------+
double LotsOptimized()
  {
   double lot=Lots;
   int     orders=HistoryTotal();     // history orders total
   int     losses= 0 ;                   // number of losses orders without a break
//---- select lot size
   lot= NormalizeDouble ( AccountFreeMargin ()*MaximumRisk/ 1000.0 , 1 );
//---- calcuulate number of losses orders without a break
   if (DecreaseFactor> 0 )
     {
       for ( int i=orders- 1 ;i>= 0 ;i--)
        {
         if ( OrderSelect (i,SELECT_BY_POS,MODE_HISTORY)==false) { Print ( "Error in history!" ); break ; }
         if ( OrderSymbol ()!= Symbol () || OrderType ()>OP_SELL) continue ;
         //----
         if ( OrderProfit ()> 0 ) break ;
         if ( OrderProfit ()< 0 ) losses++;
        }
       if (losses> 1 ) lot= NormalizeDouble (lot-lot*losses/DecreaseFactor, 1 );
     }
//---- return lot size
   if (lot< 0.1 ) lot= 0.1 ;
   return (lot);
  }

Hareketli Ortalama .mq4'e bakın

 

Fiyat değerleri için değil, momentum değerleri için oluşturulmuş bir EA'da bollinger bantlarının nasıl kullanılacağını söyler misiniz? şöyle denedim:

BandOPEriodT - harici değişken, Bollinger Bantları dönemi.

MomentumPeriodT - sırasıyla momentum dönemi.

BandOBottom=iBands (NULL,0,BandOPEriodT,1,0,iMomentum(NULL,0,MomentumPeriodT,PRICE_OPEN,0),MODE_LOWER,0);

ve ayrıca şöyle:

MomO =iMomentum(NULL,0,MomentumPeriodT,PRICE_OPEN,0); - iç değişken dönen momentum değeri

BandOBottom=iBands (NULL,0,BandOPEriodT,1,0, MomO ,MODE_LOWER,0); - değişkenin değeri, önceki değişkenin değeri için alt Bollinger bandının değerini döndürmelidir.

Yine de, MODE_LOWER'ın, değişkendeki LOWER Bollinger Bandının değerini aldığım anlamına geldiğini doğru anlıyor muyum? Değilse, nasıl elde edersiniz?

 
Ovari :

Fiyat değerleri için değil, momentum değerleri için oluşturulmuş bir EA'da bollinger bantlarının nasıl kullanılacağını söyler misiniz? şöyle denedim:

BandOPEriodT - harici değişken, Bollinger Bantları dönemi.

MomentumPeriodT - sırasıyla momentum dönemi.

BandOBottom=iBands (NULL,0,BandOPEriodT,1,0,iMomentum(NULL,0,MomentumPeriodT,PRICE_OPEN,0),MODE_LOWER,0);

ve ayrıca şöyle:

MomO =iMomentum(NULL,0,MomentumPeriodT,PRICE_OPEN,0); - iç değişken dönen momentum değeri

BandOBottom=iBands (NULL,0,BandOPEriodT,1,0, MomO ,MODE_LOWER,0); - değişkenin değeri, önceki değişkenin değeri için alt Bollinger bandının değerini döndürmelidir.

Yine de, MODE_LOWER'ın, değişkendeki LOWER Bollinger Bandının değerini aldığım anlamına geldiğini doğru anlıyor muyum? Değilse, nasıl elde edersiniz?


Fragmanı izleyin - RSI için Gruplar var - evde - her şeyi aynı şekilde yapın, yalnızca Momentum için.

Açıklama - günlükte - başlangıçtaki koda bakın.

 
Teşekkürler, aksi takdirde çok çok acemiyim ve gerçekten bir programcı değilim :)
 

Merhaba! Lütfen yardım et! PVT göstergesini denemek istiyorum:

 double PVT = iCustom ( NULL , 240 , "PVT" , PRICE_CLOSE , 1 , 1 )

Söyle bana, lütfen, ne eksik?

Günlüklere yazar: 2012.05.14 19:34:46 EURUSD,H4 üzerinde 'C:\Program Files\Alpari NZ MT4\experts\indicators\PVT.ex4' dosyası açılamıyor

Teşekkür ederim!

 
mahla :

sondaki durdurma ve başabaş çıktı nereye eklenir? ve mevduat arttığında bir şey lotu artırmaz

///////////////////////////////////////////// //////////////////////////////////////////// // /////////////////////////////////////////// /// //////////

int Satın Al (int StopLoss = 0, int TakeProfit = 0, çift Parti = 0)

{

int bilet = 0;

çift SL = 0;

çift TP = 0;

çiftHacimLot = 0;

Yeniler();

eğer (Kaybı Durdur != 0)

SL = NormalizeDouble(Teklif-StopLoss*Puan, Rakamlar);

if (TakeProfit != 0)

TP = NormalizeDouble(Sor+TakeProfit*Puan, Rakamlar);

if (Lot == 0)

VolumeLot = GetLot();

başka

Hacim Parti = Parti;

Bilet = OrderSend(Symbol(), OP_BUY, VolumeLot, NormalizeDouble(Ask, Digits), 20, SL, TP, NULL, AccountNumber(), 0, Green);

if (Bilet == -1)

{

dönüş(GetLastError());

}

başka

{

bilet iadesi);

}

}

int Satış (int StopLoss = 0, int TakeProfit = 0, çift Parti = 0)

{

int bilet = 0;

çift SL = 0;

çift TP = 0;

çiftHacimLot = 0;

Yeniler();

eğer (Kaybı Durdur != 0)

SL = NormalizeDouble(Sor+StopLoss*Puan, Rakamlar);

if (TakeProfit != 0)

TP = NormalizeDouble(Teklif Al-Kar*Puan, Rakamlar);

if (Lot == 0)

VolumeLot = GetLot();

başka

Hacim Parti = Parti;

Bilet = OrderSend(Symbol(), OP_SELL, VolumeLot, NormalizeDouble(Bid, Digits), 20, SL, TP, NULL, AccountNumber(), 0, Red);

if (Bilet == -1)

dönüş(GetLastError());

başka

bilet iadesi);

}

çift GetLot()

{

int lotu;

if (AccountBalance()>=300) lot=0.01;

if (AccountBalance()>=500) lot=0.02;

if (AccountBalance()>=800) lot=0.03;

dönüş(lot);

}

Açık bir pozisyonun zaten seçilmiş olduğunu varsayacağız ve bu pozisyonun açık olduğunu kesin olarak biliyoruz.
uzmanın bağlı olduğu sembolle. Ayrıca, takip eden durağın değerinin
pip cinsinden, TrailingStop değişkeninde bulunur.

   int err;
   if ( OrderType () == OP_BUY)
     {
       // позиция на покупку
       if ((Bid- OrderOpenPrice ())>=(TrailingStop* Point ))
         {
           // выставляем Stop Loss
           if ( OrderModify ( OrderTicket (), OrderOpenPrice (), Bid-TrailingStop* Point ,
                                     OrderTakeProfit (), 0 ))
             Print ( "#" , OrderTicket (), ": trailing stop " , Bid-TrailingStop* Point );
           else
             {
              err = GetLastError ();
               Print ( "#" , OrderTicket (), ": trailing stop error " , err);
             }
         }
     }
   else
     {
       // позиция на продажу
       if (( OrderOpenPrice ()-Ask)>=(TrailingStop* Point ))
         {
           // выставляем Stop Loss
           if ( OrderModify ( OrderTicket (), OrderOpenPrice (), Ask+TrailingStop* Point ,
                                     OrderTakeProfit (), 0 ))
             Print ( "#" , OrderTicket (), ": trailing stop " , Ask+TrailingStop* Point );
           else
             {
              err = GetLastError ();
               Print ( "#" , OrderTicket (), ": trailing stop error " , err);
             }
         }
     }
OrderProfit() işlevi , OrderSelect() işlevi kullanılarak seçilen bir siparişin kârını döndürür.

Kapalı pozisyonlardan elde ettiğimiz karı hesaplamak istediğimizi varsayalım.

   int profit = 0 ;
   int pos;
   for ( pos = 0 ; pos<HistoryTotal(); pos++ )
     {
       // выделим позицию
       if ( OrderSelect (pos, SELECT_BY_POS, MODE_HISTORY) == true)
         {
           // это не отложенный ордер?
           if ( OrderType () <= OP_SELL) profit += OrderProfit ();            
         }
       else
           Print ( "Ошибка " , GetLastError (), " при выделении ордера " , OrderTicket ());
     }
   Print ( "Суммарный профит по закрытым позициям = " , profit);
Ve tüm kapalı pozisyonlar için karı hesaplayan kodun tamamı
bugün açık olanlar:

   //---- вычислим начало дня - переменная day_start
   int c_time = CurTime();  
   datetime day_start;
   day_start=c_time- TimeHour (c_time)* 60 * 60 - TimeMinute (c_time)* 60 - TimeSeconds (c_time);
   //---- подсчитаем прибыль
   int profit = 0 ;
   int pos;
   for ( pos = 0 ; pos<HistoryTotal(); pos++ )
     {
       // выделим позицию
       if ( OrderSelect (pos, SELECT_BY_POS, MODE_HISTORY) == true)
         {
           // это не отложенный ордер?
           if ( OrderType () <= OP_SELL)
             {
               // ордер был открыт сегодня?
               if ( OrderOpenTime ()>=day_start) profit += OrderProfit ();
             }
         }
       else
           Print ( "Ошибка " , GetLastError (), " при выделении ордера " , OrderTicket ());
     }
   Print ( "Суммарный профит по закрытым позициям = " , profit);
 
mahla :

? ve mevduat arttığında bir şey lotu artırmaz

///////////////////////////////////////////// //////////////////////////////////////////// // /////////////////////////////////////////// /// //////////


Belki kod hala bu eksik:

çift Sipariş Lotları ( )
Seçilen sipariş için parti sayısını döndürür.
Sipariş, OrderSelect() işlevi kullanılarak önceden seçilmelidir.
Misal:
 if(OrderSelect(10,SELECT_BY_POS)==true)
    Print("10 siparişi için lotlar",OrderLots());
  başka
    Print("OrderSelect() bir hata döndürdü - ",GetLastError());
 
borilunad :

Merhaba! Lütfen yardım et! PVT göstergesini denemek istiyorum:

Söyle bana, lütfen, eksik olan ne?

Günlüklere yazar: 2012.05.14 19:34:46 EURUSD,H4 üzerinde 'C:\Program Files\Alpari NZ MT4\experts\indicators\PVT.ex4' dosyası açılamıyor

Teşekkür ederim!

Gerçek PVT göstergesi eksik (sizde olduğundan emin misiniz?).
 
alsu :
Gerçek PVT göstergesi eksik (sizde olduğundan emin misiniz?).

Tabii ki, hem derlenmiş hem de ex4 var. Ve bir programa koyun. Belki bir şey yazmadım? Teşekkür ederim!
Neden: