harvest : İş parçacığı olan beyler, açık bir pozisyonu başabaşa dönüştüren bir fonksiyon örneği verebilir (bir tik üzerinde çalışır), danışmanın bir sonu vardır, bu takip sadece kullanılana aktarma fonksiyonundan sonra başlar. Şimdiden teşekkürler.
Fragmana bakın - özellikle Yu.Dzyuban'dan bir trol kütüphanesi, trolün yalnızca kârdan olması koşuluyla, sorunu nasıl çözdüğünü, yani. trlinloss = false değişkeninin değeriyle, kayıp bölgesinde izlenip izlenmeyeceği. Trol işlevinizi bu örneğe göre düzenleyin ve bu kadar.
Arkadaşlar, klasik Martin neden çalışmıyor söyleyin bana? İşlemleri sadece alımlar için açar !!! Onunla zaten bir aydır sikişiyorum - sıfır duygu! Test cihazında iyi çalıştığında, ancak demoda değil. Bir başka ilginç şey - T / S ve T / P 1000 koydum - sadece alım için açılır ve 200 koydum - alım satım için ... kahretsin, fark nedir?!
işte kod plz yardım
//+------------------------------------------------------------------+ //| StMartin.mq4 | //| Sergey Kodolov | //| 84232676421@mail.ru | //+------------------------------------------------------------------+ #property copyright "Sergey Kodolov"#property link "84232676421@mail.ru"externint TP = 1000 ;
externint TS = 1000 ;
externdouble lots = 0.1 ;
double volumz;
int total,ticket;
int slip = 3 ;
int Magic = 7 ;
//+------------------------------------------------------------------+ //| expert initialization function | //+------------------------------------------------------------------+ int init()
{
//----
ticket = OrderSend ( Symbol (),OP_BUY,lots,Ask,slip,Bid-TS* Point ,Bid+TP* Point , "First order" ,Magic, 0 , Yellow ); //открываем первый ордер //---- return ( 0 );
}
//+------------------------------------------------------------------+ //| expert deinitialization function | //+------------------------------------------------------------------+ int deinit()
{
//---- //---- return ( 0 );
}
//+------------------------------------------------------------------+ //| expert start function | //+------------------------------------------------------------------+ int start()
{
//----
OrderOpenFunction();
//---- return ( 0 );
}
//+------------------------------------------------------------------+ void OrderOpenFunction()
{
total = OrdersTotal ();
if (total < 1 )
{
OrderSelect ( 0 ,SELECT_BY_POS,MODE_HISTORY);
volumz = OrderLots ();
if ( OrderProfit ()< 0 )
{
if ( OrderType () == OP_BUY)
{
double lot1 = volumz* 2 ;
ticket = OrderSend ( Symbol (),OP_SELL,lot1,Bid,slip,Ask+TS* Point ,Ask-TP* Point , 0 ,Magic, 0 , Red );
}
if ( OrderType () == OP_SELL)
{
double lot2 = volumz* 2 ;
ticket = OrderSend ( Symbol (),OP_BUY,lot2,Ask,slip,Bid-TS* Point ,Bid+TP* Point , 0 ,Magic, 0 , Green );
}
}
if ( OrderProfit ()> 0 )
{
if ( OrderType () == OP_BUY)
{
ticket = OrderSend ( Symbol (),OP_BUY,lots,Ask,slip,Bid-TS* Point ,Bid+TP* Point , 0 ,Magic, 0 , Green );
}
if ( OrderType () == OP_SELL)
{
ticket = OrderSend ( Symbol (),OP_SELL,lots,Bid,slip,Ask+TS* Point ,Ask-TP* Point , 0 ,Magic, 0 , Red );
}
}
}
}
O zaman daha da anlaşılmaz hale geliyor. Diyelim ki 1.000.000 (1kk) dolara euro aldım (broker bunu 100 ile çarpar, sonuç olarak işlem 100kk olur), grafik 100 puan yukarı sıçrar, hemen satarım ve 10.000 ile karamsarım. dolar, peki, bir komisyoncu komisyonu ve bunun sonucunda da net 6.000 dolar cebimde bir spread var. (Eh, satıştan sonra yine 100 puan düşeceği belli.) Bu saçmalık!!!! Hala düşebilir mi? Aksi takdirde, çok büyük oyuncular aslında hiçbir şey yapmadan milyarlarca dolar kazanırdı.
Sonra bilmiyorum..
Genel olarak, mesele muhtemelen şudur ki, gözle görülür bir fiyat hareketi için çok büyük miktarda, İYİ, çok büyük bir miktar satın almanız veya satmanız gerekir. Bu tür tutarlarda kredi kaldıracı benimki gibi 1/200 değil, mecazi olarak 1/2'dir. Broker komisyonu ve spread'i burada çok önemlidir. Bu tamamen kişisel. Böyle saçma sapan şeyler yazabilirim...
Bir şey beni şaşırtıyor. Kodu daha önce buraya gönderdim, bir hata oldu, düzeltmeme yardımcı oldular, Sepulca onun sayesinde tüm kod çalışıyor.Aşağıda başka bir satır, sipariş aynı siparişi seç, bir hata mı var? Bakabilirsen bir bak, sadece merak ediyorum.
for ( i= 0 ;i<= OrdersHistoryTotal ();i++){
OrderSelect (i ,SELECT_BY_POS,MODE_HISTORY);
if ( OrderMagicNumber ( )== magic) { if ( OrderSymbol ()== Symbol ()) {
current = OrderOpenTime (); Alert ( " current = OrderOpenTime(); " , current); Alert ( " max " , max );
if (current > max)
{
max = current;
ticket = OrderTicket (); Alert ( " ticket = OrderTicket(); " , ticket );
}}}}
if (ticket>- 1 ){
OrderSelect ( ticket,SELECT_BY_TICKET,MODE_HISTORY); Alert ( "SELL Select error HISTORYticket " , GetLastError ( ) ) ;
Dimka-novitsek :
Sen nesin! Neden? Arama sırasında açık emir yoktu! Belki anlamadım?
Ve numaralandırma döngüsü de tarih oldu! İçinde bir int bilet değişkeni atadığım yer
Ve yemin ederim, üzgünüm, bu yüzden 2012.02.04 11:28:47 2011.12.06 16:35 antibes EURUSD,M30: Uyarı: SATIŞ Select error HISTORYticket 4105
MODE_HISTORY'den MODE_TRADES'e ne zaman gelir?
Ve en önemlisi, sonuçta, ben de aynı sırayı seçiyorum, ayrıca bir sipariş seçimi yardımıyla tarihte de ve ilk etapta seçiliyor, aksi takdirde onunla çalışamazdım !! Mantık yok !!!!!! Şok oldum..
Böyle bir danışmanı veya senaryoyu nerede arayacağımı söyler misiniz... Fiyatın her iki tarafında, fiyattan 5-7p uzaklıkta bir grup sipariş (9-11 adet) yer alır. operasyonları için zaman kesinlikle sınırlıdır. bu konuda çok sık siparişler takılmaz ve silinir. sabahın erken saatlerinde sipariş verme zamanı, kural olarak, piyasa sert bir şekilde düzleşir. Fiyat, emir gruplarından birine yaklaşırken, ikinci emir grubunun fiyatı takip etmesini isterim. başka bir deyişle, TP ve SL ile bekleyen siparişlerin izine ihtiyacınız var. mümkün mü?? şimdiden çok teşekkür ederim.
TG : Lütfen açık pozisyonları, yani öz sermayeyi dikkate alarak izin verilen maksimum lotu hesaplama işlevini paylaşın. aksi takdirde standart olan riski dikkate alır, ancak anlaşmalar varsa, açmak için yeterli para yoktur.
Bir keresinde özel bir danışman için yazmıştım:
//+----------------------------------------------------------------------------+double CorrectLots( double lt, int Part= 2 ) {
double ltcorr, Money, MoneyCorr;
double dig = MarketInfo ( Symbol (),MODE_DIGITS);
double MaxLot = MarketInfo ( Symbol (),MODE_MAXLOT);
double MinLot = MarketInfo ( Symbol (),MODE_MINLOT);
double StpLot = MarketInfo ( Symbol (),MODE_LOTSTEP);
double OneLot = MarketInfo ( Symbol (),MODE_MARGINREQUIRED);
double TradeMrg = NormalizeDouble ( AccountFreeMargin ()/Part,dig); // Свободные средства, разрешенные к торговле
lt= MathAbs (lt);
ltcorr=lt; // Зададим начальное значением ltcorr равным значению ltif (lt>=MaxLot) ltcorr=MaxLot; // Проверим превышение допустимых ...if (lt<=MinLot) ltcorr=MinLot; // ... значений лота
Money=lt*OneLot; // Вычисляем стоимость открываемой позыif (Money<TradeMrg) return (ltcorr); // Если свободных средств больше, чем цена позиции - возвращаем неизменённый лотelseif (Money>=TradeMrg) { // Если цена позиции равна или больше, чем есть свободных средств, то ...
ltcorr= MathAbs ( MathFloor (TradeMrg/OneLot/StpLot)*StpLot); // ... рассчитаем допустимый лот
MoneyCorr=ltcorr*OneLot;
Print ( "Func CorrectLots: лот " ,lt, " скорректирован до " , DoubleToStr (ltcorr, 2 ),
" Стоимость до корректировки = " , DoubleToStr (Money,dig),
" Стоимость после корректировки = " , DoubleToStr (MoneyCorr,dig)
);
return (ltcorr); // ... и вернём его значение
}
Print ( "Func CorrectLots: лот вернули без изменений" );
return (ltcorr); // Возврат изначального лота в непредусмотренных случаях с сообщением
}
//+----------------------------------------------------------------------------+
Partiyi ayarlamak için, lt parametresi olarak pozisyon açmak istediğiniz lotu ve Part parametresi yerine - alım satımda kullanılan ücretsiz fonların bölüneceği sayıyı girerek fonksiyonu çağırmanız gerekir. Onlar. serbest marjın sadece yarısını takas etmek için, Bölüm 2, üçte biri ise 3, çeyrek - 4 vb. olmalıdır.
double Lot=CorrectLots( 0.1 , 2 );
Fonksiyonu çağırdıktan sonra, OrderSend() fonksiyonunun bir parametresi olarak Lot'u girin;
İşlev, Expert Advisor'daki lotları sert bir martin ile mükemmel şekilde sınırladı ve birleştirmeye izin vermedi. Gerçek ve karlılık azaldı...
MQL5.com web sitesine giriş yapmak için çerezlerin kullanımına izin vermelisiniz.
Lütfen tarayıcınızda gerekli ayarı etkinleştirin, aksi takdirde giriş yapamazsınız.
Hesabınıza giriş yaptınız. İki faktörlü kimlik doğrulama devre dışı bırakıldı. Yeniden kurup yeni bir QR kodu tarayın veya iki faktörlü kimlik doğrulama devre dışıyken devam edin.
İş parçacığı olan beyler, açık bir pozisyonu başabaşa dönüştüren bir fonksiyon örneği verebilir (bir tik üzerinde çalışır), danışmanın bir sonu vardır, bu takip sadece kullanılana aktarma fonksiyonundan sonra başlar. Şimdiden teşekkürler.
Fragmana bakın - özellikle Yu.Dzyuban'dan bir trol kütüphanesi, trolün yalnızca kârdan olması koşuluyla, sorunu nasıl çözdüğünü, yani. trlinloss = false değişkeninin değeriyle, kayıp bölgesinde izlenip izlenmeyeceği. Trol işlevinizi bu örneğe göre düzenleyin ve bu kadar.
Arkadaşlar, klasik Martin neden çalışmıyor söyleyin bana? İşlemleri sadece alımlar için açar !!! Onunla zaten bir aydır sikişiyorum - sıfır duygu! Test cihazında iyi çalıştığında, ancak demoda değil. Bir başka ilginç şey - T / S ve T / P 1000 koydum - sadece alım için açılır ve 200 koydum - alım satım için ... kahretsin, fark nedir?!
işte kod plz yardım
O zaman daha da anlaşılmaz hale geliyor. Diyelim ki 1.000.000 (1kk) dolara euro aldım (broker bunu 100 ile çarpar, sonuç olarak işlem 100kk olur), grafik 100 puan yukarı sıçrar, hemen satarım ve 10.000 ile karamsarım. dolar, peki, bir komisyoncu komisyonu ve bunun sonucunda da net 6.000 dolar cebimde bir spread var. (Eh, satıştan sonra yine 100 puan düşeceği belli.) Bu saçmalık!!!! Hala düşebilir mi? Aksi takdirde, çok büyük oyuncular aslında hiçbir şey yapmadan milyarlarca dolar kazanırdı.
Sonra bilmiyorum..
Genel olarak, mesele muhtemelen şudur ki, gözle görülür bir fiyat hareketi için çok büyük miktarda, İYİ, çok büyük bir miktar satın almanız veya satmanız gerekir. Bu tür tutarlarda kredi kaldıracı benimki gibi 1/200 değil, mecazi olarak 1/2'dir. Broker komisyonu ve spread'i burada çok önemlidir. Bu tamamen kişisel. Böyle saçma sapan şeyler yazabilirim...
Sen nesin! Neden? Arama sırasında açık emir yoktu! Belki anlamadım?
Ve numaralandırma döngüsü de tarih oldu! İçinde bir int bilet değişkeni atadığım yer
Ve yemin ederim, üzgünüm, bu yüzden 2012.02.04 11:28:47 2011.12.06 16:35 antibes EURUSD,M30: Uyarı: SATIŞ Select error HISTORYticket 4105
MODE_HISTORY'den MODE_TRADES'e ne zaman gelir?
Ve en önemlisi, sonuçta, ben de aynı sırayı seçiyorum, ayrıca bir sipariş seçimi yardımıyla tarihte de ve ilk etapta seçiliyor, aksi takdirde onunla çalışamazdım !! Mantık yok !!!!!! Şok oldum..
Yardıma ihtiyacınız var!
EA'da aşağıdaki bloğa sahibim (Olay sayacı):
if (isCloseLastPosByStop()==True) //Son sipariş Stop tarafından kapatılmışsa
SORU: Bilgileri ekranda görüntülemek yerine bir dosyaya (excel) nasıl veri yazılır?
Tünaydın
bana okların neden çizilmediğini söyle, kod:
ObjectCreate("miniDown", OBJ_ARROW , 0, Zaman[1], Aç[1]);
ObjectSet("miniDown", OBJPROP_ARROWCODE, 241);
ObjectSet("miniDown", OBJPROP_COLOR, Sarı);
EURUSD = 1.44757, GBPUSD = 1.63366 diyelim, birbirlerine yakın olduklarından emin olmanız gerekiyor.
Açıklamama izin ver:
a=GBPUSD/ EURUSD =1.12855336874901 yaklaşık 1.12855,
onlar. anlaşmanın yaklaşık olarak eşit olması için bir para birimi satın almak/satmak istersem, o zaman
EURUSD*a almam/satmam gerekiyor ama böyle bir lot yok, bu yüzden sorum nasıl uygulanır, lot nasıl hesaplanır?
sorunun özünü anlayan yardım etsin.
Lütfen açık pozisyonları, yani öz sermayeyi dikkate alarak izin verilen maksimum lotu hesaplama işlevini paylaşın. aksi takdirde standart olan riski dikkate alır, ancak anlaşmalar varsa, açmak için yeterli para yoktur.
Bir keresinde özel bir danışman için yazmıştım:
Partiyi ayarlamak için, lt parametresi olarak pozisyon açmak istediğiniz lotu ve Part parametresi yerine - alım satımda kullanılan ücretsiz fonların bölüneceği sayıyı girerek fonksiyonu çağırmanız gerekir. Onlar. serbest marjın sadece yarısını takas etmek için, Bölüm 2, üçte biri ise 3, çeyrek - 4 vb. olmalıdır.
Fonksiyonu çağırdıktan sonra, OrderSend() fonksiyonunun bir parametresi olarak Lot'u girin;
İşlev, Expert Advisor'daki lotları sert bir martin ile mükemmel şekilde sınırladı ve birleştirmeye izin vermedi. Gerçek ve karlılık azaldı...