Pip Başına Fiyat - sayfa 3

 

Hehe başka bir mutlu müşteri :)- biz hazır başlamışken, LEHayes bana para yönetimini yüzde olarak hesaplama konusunda yardım etmeyi düşünüyor Pipleri yuvarlamadan. Hesap sermayemin %1'ine bahis yapmak istediğimde şu anda kullandığım şey:

çift Kar_F=0.00001,Lotlar=0.1;
Lot=NormalizeDouble((AccountEquity()*Profit_F),1));
if (Lot < 0.1) Lot=0.1;
if (Lot > 1.0) Lot=1.0;

Bu, örneğin 10.000 dolarım olduğunda 100'lük stoplosum için iyi çalışıyor. 10.000$ X 0.00001 = 0.1 Lot olarak. Ama 15.000$'a sahip olduğumda, lot büyüklüğü şimdi 0.15'e eşittir, ancak belki brokerim makro lotlara izin vermediği için 2.0'a yuvarlanır. Öz sermaye 20.000 dolara ulaşana kadar onu 0,1'de kalmaya nasıl zorlayabilirim? Uzun zamandır ayaktayım, konunuzu okuduktan sonra araştırmaktan ve ders çalışmaktan çok yoruldum. mm'yi hesaplamak için başka bir denkleminiz varsa, lütfen bunun yerine sağlayın.

 
LEHayes :

Bu beni deli ediyor, hangi paritede olursa olsun Pip Başına Fiyatı hesaplamaktan başka bir şey yapmayan mevcut bir algoritma için aylardır arıyorum. Hem ticaret büyüklüklerini hem de para riski yönetimini önceden hesaplamanın bir yolu olarak bu değere bağlı olan gerçekten iyi 2 para yönetimi stratejisi buldum, ancak Pip Başına Fiyat'ı ele alan tek bir hesaplama örneği bulamıyorum.

Bunun karşılığında bir işlevde size para yönetim sistemimi sunmaya hazırım. Birlikte çalıştığım mentorların önerdiği tekniklerin her ikisini de size sağlayacağım.


İlk önce beş temel sembol tipi olduğunu kabul etmeliyiz. Bu, tick_value, kaldıraç ve benzeri hesaplamalar söz konusu olduğunda önemlidir.

Sembol türünün resmi bir tanımı yoktur, ancak USD cinsinden bir hesap için sembol türlerini şu şekilde sıralıyorum: (bunlar belirli örneklerdir, her şey dahil değildir)
            SymbolType 1 :  Symbol() = USDJPY
                           
                           Base = USD
                           Counter = JPY
            
            SymbolType 2 :  Symbol() = EURUSD
                           
                           Base = EUR
                           Counter = USD

            SymbolType 3 :  Symbol() = CHFJPY
                           
                           Base = CHF
                           Counter = JPY
                           
                           USD is base to the base currency pair - USDCHF
                           
                           USD is base to the counter currency pair - USDJPY
            
            SymbolType 4 :  Symbol() = AUDCAD
                           
                           Base = AUD
                           Counter = CAD
                           
                           USD is counter to the base currency pair - AUDUSD
                           
                           USD is base to the counter currency pair - USDCAD
            
            SymbolType 5 :  Symbol() = EURGBP
                           
                           Base = EUR
                           Counter = GBP
                           
                           USD is counter to the base currency pair - EURUSD
                           
                           USD is counter to the counter currency pair - GBPUSD

Alaka düzeyi, hesabın para biriminin ilgili finansal aracın temel para birimi ve karşı para birimi ile nasıl ilişkili olduğudur. CFD'ler ve döviz çiftleri için aynıdır.

Sembol tipine sahip olduğunuzda, finansal araç başına kaldıracı hesaplayabilirsiniz - örneğin, AUDCAD için kaldıracı hesaplamak için gereken kod:

CalculatedLeverage= NormalizeDouble (MarketInfo( Symbol (),MODE_LOTSIZE)*(MarketInfo(CalculatedBasePairForCross,MODE_BID)+MarketInfo(CalculatedBasePairForCross,MODE_ASK))/( 2 *MarketInfo( Symbol (),MODE_MARGINREQUIRED)), 2 )
Bu örnekte kodladığım çağrı işlevi, AUDCAD için CalculatedBasePairForCross öğesinin AUDUSD olduğunu zaten belirlemiş olurdu:
CalculatedBasePairForCross= StringConcatenate (SymbolBase,AccountCurrency(),postfix);
Ve SymbolBase (bu, Symbol() finansal enstrümanının temel para birimidir):
SymbolBase= StringSubstr ( Symbol (), 0 , 3 );
Ve benzeri.

Tik değerini hesaplamak için sembol türünü hesaba katmanız gerekir, çünkü bu hem ilgili finansal araçta - Symbol() - hem de hesabın değerine geri götüren bağlantılı döviz çiftinde değerleme değiştiğinde önemlidir. 4 Sembol tipini tartıştığımız yukarıdaki örneğe devam edersek - hesap USD cinsinden olduğunda AUDCAD - Tick değeri açıkça şu şekilde tanımlanır:

CalculatedTickValue=MarketInfo( Symbol (),MODE_POINT)*MarketInfo( Symbol (),MODE_LOTSIZE)/MarketInfo(CalculatedCounterPairForCross,MODE_BID)
AUDCAD için CalculatedCounterPairForCross değişkeninin önceden USDCAD olarak belirlendiği durumlarda:
CalculatedCounterPairForCross= StringConcatenate (AccountCurrency(),SymbolCounter,postfix);
Ve SymbolCounter tarafından belirlendi:
SymbolCounter= StringSubstr ( Symbol (), 3 , 3 );

Bu değerlerin hesaplanmasını bu şekilde açık bir şekilde programlayarak, komisyoncu agnostik piyasa bilgisi belirlemeleri yapabilirsiniz.

Buradaki kodun yalnızca, hesabın değer para biriminin Symbol()'nin temel para birimiyle eşleştirildiğinde karşı para birimi olduğu ve aynı şekilde hesabın değer para biriminin, karşı para birimiyle eşleştirildiğinde temel para birimi olduğu simge türü = 4 için yararlı olduğunu unutmayın. Symbol() çiftini oluşturur.

(AUDCAD -> AUDUSD & USDCAD)

Beş evrensel sembol türü varken, hesaplama kaldıracı, marj ve değer değeri için yalnızca dördünü kategorize etmeniz gerektiği ortaya çıktı. Ve matematik, hesabın değerine göre çapraz döviz çiftleriyle uğraşırken yalnızca belirli bir yapışma noktası haline gelir.

Tüm taban ve karşı kombinasyonlar arasındaki özel ilişkileri çözdüm çünkü para yönetimi yaklaşımım her ticaret için kayıp riski altındaki değeri açıkça tanımlamak ve bu, ticaretten çıkılması gereken fiyat değerini tam olarak bilmeyi gerektiriyor. kayıp, kayıplar için önceden tanımlanmış bütçeye uygundur. Çapraz çiftler için, doğal olarak, risk altındaki değerin, herhangi bir zamanda iki döviz çiftinin fiyatına dayandığı ortaya çıkar (birine veya diğerine karşı korunmadığınız sürece).

Bu bilgi hiç yardımcı oluyor mu?

 
cloudbreaker :

TICKVALUE tek başına kullanıldığında güvenilmez olabilir.

Bunun hangi broker(lar) için geçerli olduğunu veya piyasanın açık/kapalı olması gibi başka hususların olup olmadığını bilmek ilginç olurdu. Bu bulgularınızı hiçbir zaman tekrarlayamadım.

 
ha ha. jjc olduğunu anlıyorum. Ama oranı kullanmaktan zarar gelmez. Çoğu zaman 1'e böleceğiz. Üzgünüz yerine güvenli değil mi? CB
 
1005phillip :

Bu bilgi hiç yardımcı oluyor mu?

Sembol tipi 3-5 arasında yaptığınız ayrımı hiç fark etmedim (veya belki de bu bağlamda düşünmedim). Her neyse, düşünmek için iyi yemek... Mükemmel bir özet için Kudos!
 

wow, bir pipin değerini hesaplamak için bu kadar çok şey olduğunu hiç fark etmemiştim, EA'mda bunu, bir satın alma ise, ea'nın ilk açık emri kullanarak hesaplamasına izin vererek yaptım, mevcut teklif fiyatı - emir açılış fiyatı/sipariş karı = mevcut temel para birimindeki pip değeri veya satış ise, currentask+openprice/orderprofit=pip değeri, bu doğru çalışmayacak mı?

Düzenleme: Geriye doğru orderprofit/(currentbid-openprice)=pip value demek istediğimi yazdığımı fark ettim.

 
SDC :

wow, bir pipin değerini hesaplamak için bu kadar çok şey olduğunu hiç fark etmemiştim, EA'mda bunu, bir satın alma ise, ea'nın ilk açık emri kullanarak hesaplamasına izin vererek yaptım, mevcut teklif fiyatı - emir açılış fiyatı/sipariş karı = mevcut temel para birimindeki pip değeri veya satış ise, currentask+openprice/orderprofit=pip değeri, bu doğru çalışmayacak mı?


Bu hesaplama, mevcut teklif veya satış fiyatından bağımsız olarak her pip'in aynı değerlemeye sahip olduğu limitte geçerlidir.

Bu, yukarıda tanımladığım gibi sembol tipi = 2 olan döviz çiftleri için kesinlikle doğrudur, yani EURUSD vb. (hesabın değeri çiftteki karşı döviz olan herhangi bir döviz çifti).

Çoğu insan için farklılıkların önemli olması muhtemel değildir, sonuçta ortaya çıkan hatalar küçüktür. Benim durumumda değerleri doğru analitik ifadelerle sağlam bir şekilde hesaplamak istedim.

Örneğin, yaklaşan bir ticarette maksimum olası kayıp için 200$ bütçem varsa ve duraklarım 200 puana ayarlanmışsa, o zaman siparişimin lot boyutunu bilmek isterim, öyle ki kayıplarım 200$'ı geçemez... bu konuda sağlam olmak için Stoploss fiyatı noktasında pip değerini doğru hesaplamalıyım. Kanatlanmak benim ya da müşterilerim için kabul edilebilir bir seçenek değildi ;)
 

LEHayes'in her şeyi halletmesine sevindim. Ve Phillip, herkesin faydalanması için çok iyi sentezleyerek TickValue ve düzen çiftlerini tamamen buğudan arındırdınız. Harika!

Ben sadece şunu eklemek istiyorum: sentezleme işlemleri...

CalculatedCounterPairForCross= StringConcatenate (AccountCurrency(),SymbolCounter,postfix);

SymbolCounter= StringSubstr ( Symbol (), 3 , 3 );

... bazı mini lot komisyoncularında USDJPYm gibi ekstra eklenti yaşına dikkat etmeniz gerekiyor. Bir komisyoncu, sağlamlık arıyorsanız, bir .set dosyasından IMO okuması veya . sel dosyası daha güvenli bir bahistir.

 
cameofx :

LEHayes'in her şeyi halletmesine sevindim. Ve Phillip, herkesin faydalanması için çok iyi sentezleyerek TickValue ve düzen çiftlerini tamamen buğudan arındırdınız. Harika!

Sadece şunu eklemek isterim: sentezleme işlemleri...

CalculatedCounterPairForCross= StringConcatenate (AccountCurrency(),SymbolCounter,postfix);

SymbolCounter= StringSubstr ( Symbol (), 3 , 3 );

... bazı mini lot komisyoncularında USDJPYm gibi ekstra eklenti yaşına dikkat etmeniz gerekiyor. Bir komisyoncu, sağlamlık arıyorsanız, bir .set dosyasından IMO okuması veya . sel dosyası daha güvenli bir bahistir.


İyi bir nokta! ancak sağlam hesaplamalardan bahsettiğimde bu tür bir sağlamlık aramıyorum.

Brokerlar döviz çiftlerine istedikleri gibi isim verebilirler, umarım ben de bu tür şeyleri fark edecek ve kodlarımı uygun şekilde yeni bir broker ile para birimi sembolü LovelyUSDmoonCADcheese kullanarak canlı ticarete girişmeden önce düzeltecek aklım olur! :P

Bu kod, şimdiye kadar karşılaştığım vakaların %100'ünü ele alıyor (Alpari, CitiFX, CMS forex, forex.com, FXCM, FXDD, IBFX, MIG ve ODL)...Bunu yapmak konusunda endişelenmiyorum. gelecekteki kanıt, sadece mevcut kanıt. Şimdi, geleceğe hazır hale getirmek için aklınızda bir şey varsa... şimdi fikrini söylemenin tam zamanı :)

 

lovelyUSDmoonCADcheese! ...

Yüksek sesle gülmek! Aracının Symbol özelliğinde Symbol tanımını yanlış yazdığını gördüm (Simge() parametresini değil ama bir noktada bunu da yazmaları gerekiyor!). Kim bilir! :))

%100 kusursuz olup olmayacağını söyleyemem (nedir?). Ama şöyle bir şey düşünüyorum:

  • olası 3 harfli büyük harfli taban/sayaç adından oluşan bir liste/envanter oluşturun.
  • Çift dizisini .set veya .sel'den okuyun.
  • Her seferinde bir harf değiştirerek olası bir eşleşme için tarayın. Olası büyük/küçük harf kombinasyonlarını (ASCII değeri x tamsayısına göre değişir, kontrol etmemiz gerekir) kabul etmeyi göz ardı ederek, örneğin tüm harfleri büyük harfe çevirmek için bir döngü kullanabiliriz.
  • Bir eşleşme bulunursa, sahip olduğumuz 'envanter' adı yerine 'komisyoncu'/'takma ad' adı olarak kaydedin. Çiftin ikinci kısmını aramaya devam edin ve aynısını yapın.
  • Ayrıca bir taban/sayaç adının Symbol() yoluyla tutarlı olup olmadığını da kontrol etmemiz gerekiyor. Ve 'takma adlarını' da kaydedin.
  • çifti sentezlemek için takma adları kullanın.
  • yeni bir baz/sayaç adı değiştirilirse veya eklenirse. Takma adlara ekleyin.

Gordon bir süre önce, otomatik bir kusursuz kontrolün bir EA'da ne gibi yararları olacağı konusunda bana kendi görüşünü sunuyor. Bunu göz önünde bulundurarak (ve buna saygı duyarak) hala bunun sadece cehennem için bile değerli bir şey olabileceğini düşünüyorum! :)