Birbirinden bağımsız iki pozisyonu yöneten bir kar trolünün tavsiyesine ihtiyacım var, nasıl uygulayabilirim? - sayfa 4

 
charony :

2sell'de, takip SL'yi 850'ye koymalıydı

ama 950 seviyesinde kapattı, manuel ticarette durum böyle değil

bu kodda nasıl yapılabilir?

neden hepsi aniden? Fiyat sadece 899'a ulaştıysa. İz 50 puan uzakta olmalı, yani 950 civarında bir yerde olmalı.
 
sanyooooook :
neden hepsi aniden? Fiyat sadece 899'a ulaştıysa. İz 50 puan uzakta olmalı, yani 950 civarında bir yerde olmalı.

1sell'den SL ile kapattı
 
Bekleyelim belki bilen biri yetişir.
 
kimse bilmiyor mu
 
charony :
kimse bilmiyor mu


Görünüşe göre bir pozun yalnızca fiyat, pozun açılış fiyatından en az X puan (örneğin, 100) doğru yönde hareket ettiğinde açılması için ize ihtiyacınız var mı? Evetse, bu, trol işlevinde ek olarak bir kod satırıdır.

Açılış fiyatından X puan geçildiğinde izin tetikleneceği başka bir seçenek daha var: 100p geçti - iz -50p, başka bir 100p geçti - tekrar -50 ile takip edildi, vb.

 
Avals :


Görünüşe göre bir pozun yalnızca fiyat, pozun açılış fiyatından en az X puan (örneğin, 100) doğru yönde hareket ettiğinde açılması için ize ihtiyacınız var mı? Evetse, bu, trol işlevinde ek olarak bir kod satırıdır.

Açılış fiyatından X puan geçildiğinde izin tetikleneceği başka bir seçenek daha var: 100p geçti - iz -50p, başka bir 100p geçti - tekrar -50 ile takip edildi, vb.


Bende böyle var yani belirli olaylarda trol açılıyor

bir pozisyon açıkken sorun yok,

2 veya daha fazla pozisyon açarken, treyler sadece bir SL yerleştirir,

SL seviyesinin herhangi bir pozisyonuna ulaşıldığında

bu türdeki tüm pozisyonlar kapalı

Aynı türden pozisyonları yönlendirmek için ize ihtiyacım var

birbirinden bağımsız

 
charony :


Bende böyle var yani belirli olaylarda trol açılıyor

bir pozisyon açıkken sorun yok,

2 veya daha fazla pozisyon açarken, treyler sadece bir SL yerleştirir,

SL seviyesinin herhangi bir pozisyonuna ulaşıldığında

bu türdeki tüm pozisyonlar kapalı


stop zararınız, TralingStop noktalarındaki tüm pozisyonlar için son fiyattan aynı şekilde ayarlanır ve sadece açık pozisyona doğru hareket eder. Onlar. tüm pozlar için, satın alma takibi, tutma süresi için maksimum değerden ayarlanır ve elbette hepsi aynı anda kapanır. maksimum toplam olacaktır. Neye ihtiyacınız olduğunu belirleyin - hangi algoritma, böylece "birbirinden bağımsız olarak aynı tipteki pozisyonlar" kapatılır. Birçok seçenek var.
 

ayarlarda SL ayarlanmadı, yani = 0, TP de = 0,

Trol=Tüm pozisyonlar ve tüm türler için 50 puan

Trol, birbirinden bağımsız olarak pozisyonlarda gezinmelidir.

1000=pos1Buy'da fiyat, pos1Buy için 1050 SL'nin ardından kuzeye gitti

fiyat daha da kuzeye gitti, 1090'a ulaştı, pos1Buy için SL 1050'de kaldı, pos2Buy için SL olmadı.

fiyat güneye gitti, 1050'ye ulaştı, her iki pozisyon da kapatıldı

Yalnızca pos1'i kapatmak için SL'ye ihtiyacım var

fiyat 1140'a ulaşırsa pos2 SL tarafından kapatılmalıdır ,

yani 2. konum için SL 1130'a ayarlanacak ve 1140'tan itibaren fiyat 1130'un altına düşecek

pos2 için SL çalışması gerekir

pos2Buy------------------------------------------------- ------------ ------------------------1080

SL------------------------------------------------ --------------------------------1050

pos1Buy------------------------------------------------- --------------- ------------------------1000

 

Sihri parametre olarak kabul eden trolüm, emirleri sihir olarak açarken Zaman[0] veya başka bir şey, tarih saat veya her neyse alabilirsin)

kabul eder:

level_ts - Noktalarda takip eden durdurma

level_step - Trol adımı

mn - Magic, eğer -1 ise tüm emirleri troller.


 //+----------------------------------------------------------------------------+
//| TrailingStop.                                                              |
//|   траллит все ордера, на уровень выставленный во входных параметрах.       |
//+----------------------------------------------------------------------------+
void TrailingStop( int level_ts, int level_step = 5 , int mn = - 1 ) 
{
   int ot, err, quantity_orders, cx;
   bool fm;
   double op, as, bd, pt, sl, tp, ut;
//----
   quantity_orders = OrdersTotal ();
   if (quantity_orders >= 0 ) {
       for (cx = 0 ; cx < quantity_orders; cx++) {
         if (! OrderSelect (cx, SELECT_BY_POS, MODE_TRADES)) {
             Print ( "Error: SimpleTrailing(), OrderSelect: " + cx + ". Ошибка: " + GetLastError ());
         }
         if (mn < 0 || OrderMagicNumber ()==mn) {   
            pt = MarketInfo ( OrderSymbol (), MODE_POINT);
            bd = MarketInfo ( OrderSymbol (), MODE_BID);
            as = MarketInfo ( OrderSymbol (), MODE_ASK);
            op = OrderOpenPrice ();
            ot = OrderType ();
            sl = OrderStopLoss ();
            tp = OrderTakeProfit ();
            ut = level_ts + level_step;
         
             if (ot == OP_BUY) {
               if (sl == 0 || sl < op) {                               // если стопа нет или стоп ниже цены открытия
                   if (op <  (bd - ut * pt)) {                         // если цена открытия ниже чем текущая цена минус ( стоп - шаг стопа)
                     sl = bd - level_ts * pt;
                  }
               }
               else {
                   if (sl < (bd - ut * pt) && bd > (op + ut * pt)) {
                     sl = bd - level_ts * pt;
                  }
               }
            }
             if (ot == OP_SELL) {
               if (sl == 0 || sl > op) {
                   if (op > (as + ut * pt)) {
                     sl = as + level_ts * pt;
                  }
               }
               else {
                   if (sl > (as + ut * pt) && as < (op - ut * pt)) {
                     sl = as + level_ts * pt;
                  }
               }
            }
             if (sl != OrderStopLoss ()) {
               op = NormalizeDouble (op, Digits );
               tp = NormalizeDouble (tp, Digits );
               sl = NormalizeDouble (sl, Digits );
               fm = OrderModify ( OrderTicket (), op, sl, tp, 0 , CLR_NONE );
               if (fm) {
                   if (UseSound) PlaySound (NameFileSound);
               }
               else {
                  err= GetLastError ();
                   Print ( "Error(" ,err, ") SimpleTrailing(): " ,ErrorDescription(err));
               }
            }
         }
      }
   }
}
 
charony :

ayarlarda SL ayarlanmadı, yani = 0, TP de = 0,

Trol=Tüm pozisyonlar ve tüm türler için 50 puan

Trol, birbirinden bağımsız olarak pozisyonlarda gezinmelidir.

1000=pos1Buy'da fiyat, pos1Buy için 1050 SL'nin ardından kuzeye gitti

fiyat daha da kuzeye gitti, 1090'a ulaştı, pos1Buy için SL 1050'de kaldı, pos2Buy için SL olmadı.

fiyat güneye gitti, 1050'ye ulaştı, her iki pozisyon da kapatıldı

Yalnızca pos1'i kapatmak için SL'ye ihtiyacım var

fiyat 1140'a ulaşırsa pos2 SL tarafından kapatılmalıdır ,

yani 2. konum için SL 1130'a ayarlanacak ve 1140'tan itibaren fiyat 1130'un altına düşecek

pos2 için SL çalışması gerekir

pos2Buy------------------------------------------------- ------------ ------------------------1080

SL------------------------------------------------ --------------------------------1050

pos1Buy------------------------------------------------- --------------- ------------------------1000


Doğru anladıysam, değiştirmeniz gerekir

  if (NormalizeDouble(SL,Digits)<// Если ниже желаемого..
               NormalizeDouble(Bid-TS,Digits))

üzerinde

  if (NormalizeDouble(SL,Digits)<// Если ниже желаемого..
               NormalizeDouble(Bid-TS,Digits) && (Bid>=Price+TS))
hücre için benzer.