KimIV : Her erkeğin ayrılma hakkı vardır ... eee ... Bu konuda biraz eğleneceğim
İlnar , bir fraktalla ilgili bekleyen emir konusunda, "Verilen fraktallar üzerinde bekleyen emir nasıl yapılır?" diye sordu.
İlnar'ın fraktalların fiyat seviyelerini belirlemekte zorlandığını varsayıyorum. Bu nedenle, geleneksel olarak işlevimi kullanmayı öneriyorum:
//+----------------------------------------------------------------------------+//| Автор : Ким Игорь В. aka KimIV, http://www.kimiv.ru |//+----------------------------------------------------------------------------+//| Версия : 07.10.2006 |//| Описание : Поиск ближайшего фрактала. |//+----------------------------------------------------------------------------+//| Параметры: |//| sy - наименование инструмента (NULL - текущий символ) |//| tf - таймфрейм ( 0 - текущий ТФ) |//| mode - тип фрактала (MODE_LOWER|MODE_UPPER) |//+----------------------------------------------------------------------------+doubleFindNearFractal(stringsy="0", inttf=0, intmode=MODE_LOWER){ if(sy=="" || sy=="0")sy=Symbol();
doublef=0;
intd=MarketInfo(sy, MODE_DIGITS), s;
if(d==0)if(StringFind(sy, "JPY")<0)d=4; elsed=2;
for(s=2; s<100; s++){ f=iFractals(sy, tf, mode, s);
if(f!=0)return(NormalizeDouble(f, d));
} Print("FindNearFractal(): Фрактал не найден");
return(0);
}
FindNearFractal() işlevi, belirli bir sembolde, belirli bir zaman diliminde belirli bir türün en yakın fraktalını arar ve fiyat düzeyini döndürür. Fraktal lokasyonun fiyat seviyesini bilerek, bu seviyede sipariş vermek zaten çok kolay.
Fonksiyonun, örneğin fraktalın bulunduğu çubuğun numarasını da iki değer döndürmesi mümkün mü yoksa başka bir tane bağlamak gerekli mi?
xrust писал (а): Fonksiyonun, örneğin fraktalın bulunduğu çubuğun numarasını da iki değer döndürmesi mümkün mü yoksa başka bir tane bağlamak gerekli mi?
Bir tane yeterli olduğunda neden iki değer döndürelim - çubuk numarası? Bunu yapmak için operatörde:
return(NormalizeDouble(f, d));
fiyat seviyesinin değil, bar sayacının değerinin iletimini yazın s . Çıktıda fraktal çubuğun numarasını alın. Fraktalın türüne bağlı olarak iHigh () veya iLow () işlevlerinden biriyle fiyat seviyesini alın.
xrust : Hayır, burada her şey açık, temelde soruyorum.
ahh ... peki, eğer prensipte ise, referansla geçen bir diziyi kullanabilirsiniz. Daha sonra döndürülen parametrelerin sayısı dizinin boyutuyla sınırlandırılacaktır.
Belirli bir parti büyüklüğüne sahip bir siparişin varlığının bayrağını döndürür. Doğru - sipariş var (ayarlandı), Yanlış - sipariş yok (ayarlanmadı). Kontrol edilen siparişlerin listesini fonksiyon parametreleriyle sınırlayabilirsiniz:
sy - Araç adı. Bu parametreyi ayarlarsanız, fonksiyon sadece belirtilen enstrümanın siparişlerini kontrol edecektir. NULL , geçerli araç anlamına gelir ve "" (varsayılan) herhangi bir araç anlamına gelir.
op - İşlem, bekleyen emir türü. Geçerli değerler OP_BUYLIMIT, OP_BUYSTOP, OP_SELLLIMIT, OP_SELLSTOP veya -1 şeklindedir. Varsayılan değer -1 , herhangi bir sipariş türü anlamına gelir.
mn - Sipariş Kimliği (MagicNumber). Varsayılan değer -1 - herhangi bir büyü.
lo - İki ondalık basamak doğruluğu ile parti boyutu. Varsayılan değer 0 - herhangi bir parti büyüklüğü.
//+----------------------------------------------------------------------------+//| Автор : Ким Игорь В. aka KimIV, http://www.kimiv.ru |//+----------------------------------------------------------------------------+//| Версия : 28.11.2006 |//| Описание : Возвращает флаг существования ордера по размеру лота. |//+----------------------------------------------------------------------------+//| Параметры: |//| sy - наименование инструмента ("" - любой символ, |//| NULL - текущий символ) |//| op - операция (-1 - любой ордер) |//| mn - MagicNumber (-1 - любой магик) |//| lo - лот ( 0 - любой лот) |//+----------------------------------------------------------------------------+boolExistOrdersByLot(stringsy="", intop=-1, intmn=-1, doublelo=0){inti, k=OrdersTotal(), ot;
lo=NormalizeDouble(lo, 2);
if(sy=="0")sy=Symbol();
for(i=0; i<k; i++){if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES)){ot=OrderType();
if(ot>1 && ot<6){if((OrderSymbol()==sy || sy=="") && (op<0 || ot==op)){if(mn<0 || OrderMagicNumber()==mn){if(lo<=0 || NormalizeDouble(OrderLots(), 2)==lo)return(True);
}}}}}return(False);
}
Son verilen siparişin parti boyutunu veya -1 döndürür. Kontrol edilen siparişlerin listesini fonksiyon parametreleriyle sınırlayabilirsiniz:
sy - Araç adı. Bu parametreyi ayarlarsanız, fonksiyon sadece belirtilen enstrümanın siparişlerini kontrol edecektir. NULL , geçerli araç anlamına gelir ve "" (varsayılan) herhangi bir araç anlamına gelir.
op - İşlem, bekleyen emir türü. Geçerli değerler OP_BUYLIMIT, OP_BUYSTOP, OP_SELLLIMIT, OP_SELLSTOP veya -1 şeklindedir. Varsayılan değer -1 , herhangi bir sipariş anlamına gelir.
mn - Sipariş Kimliği (MagicNumber). Varsayılan değer -1 - herhangi bir büyü.
//+----------------------------------------------------------------------------+//| Автор : Ким Игорь В. aka KimIV, http://www.kimiv.ru |//+----------------------------------------------------------------------------+//| Версия : 28.11.2006 |//| Описание : Возвращает размер лота последнего выставленного ордера или -1 |//+----------------------------------------------------------------------------+//| Параметры: |//| sy - наименование инструмента ("" - любой символ, |//| NULL - текущий символ) |//| op - операция (-1 - любая позиция) |//| mn - MagicNumber (-1 - любой магик) |//+----------------------------------------------------------------------------+doubleGetLotLastOrder(stringsy="", intop=-1, intmn=-1){datetimeo;
doublel=-1;
inti, k=OrdersTotal();
if(sy=="0")sy=Symbol();
for(i=0; i<k; i++){if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES)){if(OrderSymbol()==sy || sy==""){if(OrderType()>1 && OrderType()<6){if(op<0 || OrderType()==op){if(mn<0 || OrderMagicNumber()==mn){if(o<OrderOpenTime()){o=OrderOpenTime();
l=OrderLots();
}}}}}}}return(l);
}
Son verilen siparişin fiyatını veya 0'ı döndürür. Kontrol edilen siparişlerin listesini fonksiyon parametreleriyle sınırlayabilirsiniz:
sy - Araç adı. Bu parametreyi ayarlarsanız, fonksiyon sadece belirtilen enstrümanın siparişlerini kontrol edecektir. NULL , geçerli araç anlamına gelir ve "" (varsayılan) herhangi bir araç anlamına gelir.
op - İşlem, bekleyen emir türü. Geçerli değerler OP_BUYLIMIT, OP_BUYSTOP, OP_SELLLIMIT, OP_SELLSTOP veya -1 şeklindedir. Varsayılan değer -1 , herhangi bir sipariş anlamına gelir.
mn - Sipariş Kimliği (MagicNumber). Varsayılan değer -1 - herhangi bir büyü.
//+----------------------------------------------------------------------------+//| Автор : Ким Игорь В. aka KimIV, http://www.kimiv.ru |//+----------------------------------------------------------------------------+//| Версия : 28.11.2006 |//| Описание : Возвращает цену установки последнего ордера или 0. |//+----------------------------------------------------------------------------+//| Параметры: |//| sy - наименование инструмента ("" - любой символ, |//| NULL - текущий символ) |//| op - операция (-1 - любая позиция) |//| mn - MagicNumber (-1 - любой магик) |//+----------------------------------------------------------------------------+doubleGetOrderOpenPrice(stringsy="", intop=-1, intmn=-1){datetimet;
doubler=0;
inti, k=OrdersTotal();
if(sy=="0")sy=Symbol();
for(i=0; i<k; i++){if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES)){if(OrderSymbol()==sy || sy==""){if(OrderType()>1 && OrderType()<6){if(op<0 || OrderType()==op){if(mn<0 || OrderMagicNumber()==mn){if(t<OrderOpenTime()){t=OrderOpenTime();
r=OrderOpenPrice();
}}}}}}}return(r);
}
Her erkeğin ayrılma hakkı vardır ... eee ... Bu konuda biraz eğleneceğim
İlnar , bir fraktalla ilgili bekleyen emir konusunda, "Verilen fraktallar üzerinde bekleyen emir nasıl yapılır?" diye sordu.
İlnar'ın fraktalların fiyat seviyelerini belirlemekte zorlandığını varsayıyorum. Bu nedenle, geleneksel olarak işlevimi kullanmayı öneriyorum:
FindNearFractal() işlevi, belirli bir sembolde, belirli bir zaman diliminde belirli bir türün en yakın fraktalını arar ve fiyat düzeyini döndürür. Fraktal lokasyonun fiyat seviyesini bilerek, bu seviyede sipariş vermek zaten çok kolay.
Fonksiyonun, örneğin fraktalın bulunduğu çubuğun numarasını da iki değer döndürmesi mümkün mü yoksa başka bir tane bağlamak gerekli mi?
Hayır, burada her şey açık, temelde soruyorum.
ExistOrdersByLot() işlevi.
Belirli bir parti büyüklüğüne sahip bir siparişin varlığının bayrağını döndürür. Doğru - sipariş var (ayarlandı), Yanlış - sipariş yok (ayarlanmadı). Kontrol edilen siparişlerin listesini fonksiyon parametreleriyle sınırlayabilirsiniz:
ExistOrdersByLot() işlevini kullanma örnekleri.
Ekli, her zamanki gibi, yukarıdaki örneklerle birlikte çalışan bir komut dosyasıdır.
GetLotLastOrder() işlevi.
Son verilen siparişin parti boyutunu veya -1 döndürür. Kontrol edilen siparişlerin listesini fonksiyon parametreleriyle sınırlayabilirsiniz:
GetLotLastOrder() işlevini kullanma örnekleri.
Ekte, yukarıdaki örneklerle birlikte geleneksel olarak çalışan bir komut dosyası bulunmaktadır.
GetOrderOpenPrice() işlevi.
Son verilen siparişin fiyatını veya 0'ı döndürür. Kontrol edilen siparişlerin listesini fonksiyon parametreleriyle sınırlayabilirsiniz:
GetOrderOpenPrice() işlevini kullanma örnekleri.
Ekli, yukarıdaki örneklerle mükemmel çalışan bir komut dosyasıdır.