Lütfen yayılma konusunda bana yol gösterin - sayfa 3

 
EA starts 
---> Does nothing till there is 0 or 1 order 
----> Makes a 'call open sound' when 2nd order gets triggered 
----> Closes both orders at X amount of pure profit [after considering spread] and makes a 'call close sound' ]

of course, call open and call close sound files can be any small wave files.. easily available on mt4 itself. .. 
I think these things can be achieved in the above EA that I had posted by changing a few things !
Vay canına .. istediğini kodlamak temelde oldukça kolaydır.
 
deysmacro :
Vay canına .. istediğini kodlamak temelde oldukça kolaydır.


Bana rehberlik edebilir misin? Bunu zaten web'den aldım

 //+------------------------------------------------------------------+
//|                    CloseTrades_After_Account_Profit_Reached.mq4  |
//|                                     Copyright © 2007, Tradinator |
//|                                          tradinator.fx@gmail.com |
//+------------------------------------------------------------------+

#property copyright "Copyright © 2007, Tradinator"
#property link        "tradinator.fx@gmail.com"


                                       
extern double My_Money_Profit_Target= 100 ;     //The amount of money profit at which you want to close ALL open trades.
extern string Profit_Target= "Enter above To Close all OPEN trades when amount of profit is Reached in Account and not per OPEN trade! " ;
                                          
int Slippage= 5 ;
int i;

//+------------------------------------------------------------------+
//| expert initialization function                                   |
//+------------------------------------------------------------------+
int init()
  {
//---- 
   
//----
   return ( 0 );
  }
//+------------------------------------------------------------------+
//| expert deinitialization function                                 |
//+------------------------------------------------------------------+
int deinit()
  {
//---- 
   
//----
   return ( 0 );
  }
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+


int start()
{
if ( AccountProfit ()>= My_Money_Profit_Target)
   {
     for (i= OrdersTotal ()- 1 ;i>= 0 ;i--)
       {
       OrderSelect (i, SELECT_BY_POS );
       int type   = OrderType ();
               
       bool result = false ;
              
       switch (type)
          {
           //Close opened long positions
           case OP_BUY   : result = OrderClose ( OrderTicket (), OrderLots (), MarketInfo ( OrderSymbol (), MODE_BID ),Slippage,Pink);
                         break ;
               
           //Close opened short positions
           case OP_SELL : result = OrderClose ( OrderTicket (), OrderLots (), MarketInfo ( OrderSymbol (), MODE_ASK ),Slippage,Pink);
                          
          }
          
       if (result == false )
          {
             Sleep ( 0 );
          }  
       }
       Print ( "Account Profit Reached. All Open Trades Have Been Closed" );
       return ( 0 );
   }  
   
   Comment ( "Balance: " , AccountBalance (), ", Account Equity: " , AccountEquity (), ", Account Profit: " , AccountProfit (),
           "\nMy Account Profit Target: " ,My_Money_Profit_Target);
   
   return ( 0 );
}

Şimdi, kodlayıcı olmadığımı çok net bir şekilde belirttim, ancak EXECUTED [beklemede olmayan] siparişlerin sayısını sayan ve ardından yalnızca 2 ise sonraki koda devam eden " int start()" altında bir satıra ihtiyacım olduğunu düşünüyorum. ve kodun geri kalanını çalıştırır.. if ( AccountProfit ()>= My_Money_Profit_Target).. etc

Sağ? MQL'de böyle bir satır nasıl söylenir?

 int start()
{
 {
   if (Ordertotal()<= 1 )  ------>   See , something here which says only execute lower code if total executed orders are two else dont go to lower code.. I know that syntax is totally busted, trying to push the concept                                                                                                             
                                   as a weak non coder mind ;( .. so till total open orders are less than or equal to 1 means not 2 , the code below that line wont come into play !         

       if ( AccountProfit ()>= My_Money_Profit_Target)
   {
     for (i= OrdersTotal ()- 1 ;i>= 0 ;i--)
       {
       OrderSelect (i, SELECT_BY_POS );
 
thrdel :

Evet deVries ,

her şey başarısız oluyor ve sen öyle diyorsan bunu yapmamalıyım, ama gerçekten cevap vermende pek bir yardım göremediğim için .....

Kodun telaşlı bir müşteriye satılmak üzere tasarlanmış ticari bir EA olmadığını anlıyorsunuz, değil mi Bir şeyleri çözmeye çalışıyoruz ve yardım etmek istemiyorsanız, en azından kendi haline bırakmalısınız.

Gerçekten, zaman çerçevesini birkaç kez değiştirirsem.....ne? Kayma 3000000 olacak mı? Görünüşe göre MT4'ümde değil. Ve bana inanmıyorsanız, kendiniz bir test yapın.

Testim, zaman dilimlerini değiştirdiğinizde, EA'nın deinit/init döngüsünden geçtiğini ve bahsedilen kod OnInit'te olduğundan, Slippage'in her seferinde 30 noktada olacağını söylüyor.

Herkesin görebileceği gibi, önerdiğiniz buysa, zaman dilimlerini değiştirmek Kayma'yı bir milyona getirmeyecektir.

Ve hayır, bu sahte bir resim değil, gerçek, her zaman dilimini değiştirme zamanını kontrol edebilirsiniz.

Umarım yardımcı olur.


bu başarısız .....

birçok işlem için prc doğru fiyat değil

buna ne diyeceksin...

OnInit() ve OnDeinit() için Çift Çağrıları okuyun

yeni sürümlerde sorunlar var

(Çift OnInit() sorunu, yapı 628'de düzeltilmiş görünüyor, ancak hala bu sürüme sahip değil)

 
deVries :

bu başarısız .....

birçok işlem için prc doğru fiyat değil

buna ne diyeceksin...

hehehe, şimdi siz ikiniz tavşan deliğinin derinliklerine gittiniz ve kuşların kafamın üzerinden uçmasına neden olan bir şeyi tartışıyorsunuz! xD .. eklediğim şu topal kod satırına bakar mısınız? =D

 
tatyawinchu :

hehehe, şimdi siz ikiniz tavşan deliğinin derinliklerine gittiniz ve kuşların kafamın üzerinden uçmasına neden olan bir şeyi tartışıyorsunuz! xD .. eklediğim şu topal kod satırına bakar mısınız? =D


Doğru Ask ve Bid, ticaret başka ise, grafiğin fiyatlarıdır. Sembol kapanış fiyatı yanlış

       if (result == false )
          {
             Sleep ( 0 );
          }  

bunun etkisi ne olacak??

başarısız mı??? OrderType işlem bekliyor ???

yoksa kapanıyor mu

bu durumda, nedenini bilerek son hatayı GetLastError() almanız gerekir.

 
tatyawinchu :

EA başlar ---> 0 veya 1 sipariş olana kadar hiçbir şey yapmaz ----> 2. sipariş tetiklendiğinde bir 'çağrı açma sesi' çıkarır ----> Her iki siparişi de X tutarında saf kârla kapatır [yayılımı değerlendirdikten sonra ] ve bir 'çağrı kapatma sesi' çıkarır ]

Tabii ki, arama açma ve arama kapatma ses dosyaları herhangi bir küçük dalga dosyası olabilir.. mt4'ün kendisinde kolayca bulunur. .. Bu şeylerin, birkaç şeyi değiştirerek yayınladığım yukarıdaki EA'da elde edilebileceğini düşünüyorum! hehehe yardım et lütfen =D

Merhaba tatyawinchu ,

EA'nın ne yaptığını iyi anlamadığınıza inanıyorum. Adım adım size rehberlik etmeme izin verin ve amacınız için kullanabileceğiniz veya kullanamayacağınız bir şey olup olmadığına siz karar verin.

Hesaba dayalı stoploss, onu kullanmak isteyen herkesi korumak için var ve hesabınızda 10 000 varsa ve hepsini riske atmak istiyorsanız, en azından acil durdurma olmadan piyasada olmanızı asla tavsiye etmem, sadece StopLossLimit'i 10 000 olarak ayarlayın.

Senin kararın.

Şimdi, koda geri dönelim, 1, 2, 3 kadar kolay:

1. OnTick işlevindeki kodu okursanız - bu her işarette çalıştırılan kısımdır - yaptığı ilk şeyin şu olduğunu göreceksiniz: CountMyOrders. Umarım bunu görürsün. Ardından, siparişlerim <1 henüz sipariş olmadığı anlamına geliyorsa, hesap öz sermayesini kontrol eder, bunu hatırlar ve öyle olduğunu gösterir.

Başka bir şey yapmaz. Sonraki onay işareti, hala sipariş yoksa beklemeye geri dönün. EA olmak oldukça sıkıcı, değil mi?

2.Bir emir verildiğinde benimSiparişlerim<1 artık doğru değildir, bu nedenle bir sonraki tıkta, bir sonraki satıra atlar ve piyasada bulunan emir veya emirlerin karını hesaplar.

3.Ardından, tüm siparişlerin kârının toplamını hedef kârla karşılaştıracaktır.

Kolay, değil mi? Kâr hedefe ulaşırsa, sonraki satırda şunu söyler: ExitAll . Ve ekranda, siparişlerin hedeflerine ulaştığını bildiren bir uyarı (sesli) açılır!

O kadar kötü değildi, değil mi?

Ve belirtmeyi unuttum, eğer piyasa size karşı çıkarsa ve özkaynak kaybı önceden belirlenmiş seviyeye ulaşırsa, kalan sermayeyi korumak için sizi piyasadan çıkarır.

Ve bu sana yapabileceğim en iyi yardım.

Bundan daha fazlasına ihtiyacınız varsa, muhtemelen bundan daha fazla özel kod yapan adamlar için bir iştir.

Umarım yardımcı olur.

Şerefe

 
thrdel :

Merhaba tatyawinchu ,

EA'nın ne yaptığını iyi anlamadığınıza inanıyorum. Adım adım size rehberlik etmeme izin verin ve amacınız için kullanabileceğiniz veya kullanamayacağınız bir şey olup olmadığına siz karar verin.

Hesaba dayalı stoploss, onu kullanmak isteyen herkesi korumak için var ve hesabınızda 10 000 varsa ve hepsini riske atmak istiyorsanız, en azından acil durdurma olmadan piyasada olmanızı asla tavsiye etmem, sadece StopLossLimit'i 10 000 olarak ayarlayın.

Senin kararın.

Şimdi, koda geri dönelim, 1, 2, 3 kadar kolay:

1. OnTick işlevindeki kodu okursanız - bu her işarette çalıştırılan kısımdır - yaptığı ilk şeyin şu olduğunu göreceksiniz: CountMyOrders. Umarım bunu görürsün. Daha sonra, siparişlerim <1 henüz sipariş olmadığı anlamına geliyorsa, hesap özkaynaklarını kontrol eder, hatırlar ve öyle olduğunu gösterir.

Başka bir şey yapmaz. Sonraki onay işareti, hala sipariş yoksa beklemeye geri dönün. EA olmak oldukça sıkıcı, değil mi?

2.Bir emir verildiğinde benimSiparişlerim<1 artık doğru değildir, bu nedenle bir sonraki tıkta, bir sonraki satıra atlar ve piyasada bulunan emir veya emirlerin karını hesaplar.

3.Ardından, tüm siparişlerin kârının toplamını hedef kârla karşılaştıracaktır.

Kolay, değil mi? Kâr hedefe ulaşırsa, sonraki satırda şunu söyler: ExitAll . Ve ekranda, siparişlerin hedeflerine ulaştığını bildiren bir uyarı (sesli) açılır!

Çok kötü değildi, değil mi?

Ve belirtmeyi unuttum, eğer piyasa size karşı çıkarsa ve özkaynak kaybı önceden belirlenmiş seviyeye ulaşırsa, kalan sermayeyi korumak için sizi piyasadan çıkarır.

Ve bu sana yapabileceğim en iyi yardım.

Bundan daha fazlasına ihtiyacınız varsa, muhtemelen bundan daha fazla özel kod yapan adamlar için bir iştir.

Umarım yardımcı olur.

Şerefe


Hmm.. ayrılıyoruz gibi görünüyor..

Tam gereksinimim aşağıdaki gibidir: -

1. Adım EA başlar.

Adım 2 EA, hesaplanacak başlangıç noktasını bilmek için cari hesap kârını kontrol eder.

Adım 3 EA, çalışan açık siparişleri [beklemede değil] kontrol eder.

Adım 4 EA, çalışan bir düzen yoksa VEYA yalnızca BİR çalışan düzen varsa hiçbir şey yapmaz.

Adım 5 EA, İKİNCİ sipariş tetiklendiğinde bir ses çıkarır .. Bu ikinci sipariş başka bir çiftte olacaktır.

Adım 6 EA, SPREAD'i dikkate alarak BOTH emirlerini X kârında kapatır ve bir ses çıkarır....

EA'nın ihtiyaç duymadığı şey.. SL veya TP her türlü ayarı..

Tercihen, EA ikiden fazla sipariş üzerinde çalışmalıdır, ancak çok zorsa gerekli değildir..

[Mantıksal olarak zor olmayacağını düşünüyorum, oldukça kolay, çünkü EA, 1'DEN FAZLA olan TÜM açık siparişleri kapatmak için etkinleştirir .. bu otomatik olarak 2 veya DAHA FAZLA! yani bu zaten EA tarafından kapsanmış olabilir.. yanlışsa düzeltin!]

 
deysmacro :
Vay canına .. istediğini kodlamak temelde oldukça kolaydır.

komiksin İnce ama komik.
 
thrdel :

komiksin İnce ama komik.

ya bir IF döngüsü ekleyebilir ve ardından döngüyü başlatan kodun geri kalanını aşağıya yapıştırabilirsem?

EĞER koşulu, tüm açık siparişleri yayılmadan sonra X kârda kapatmak için kontrole geçilmesi için Sipariş Toplamını => 2 olarak kontrol etmelidir.

EA'ya belirli bir durumda not tutması nasıl söylenir?

Aşağıdakileri yaptığımı söyle

//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+


int start() 
{
if (OrdersTotal()=>2)                                     // Can this work? Can a function be directly called like this?
} 
{
 if (AccountProfit()>= My_Money_Profit_Target)
   {
    for(i=OrdersTotal()-1;i>=0;i--)
       {
       OrderSelect(i, SELECT_BY_POS);
       int type   = OrderType();
               
       bool result = false;
              
       switch(type)
Ok, cant seem to get out of this box yet ! hehe need to know forum stuff more ! but, as you can see above, if that " if (OrdersTotal()=>2)" is valid, it would directly solve my problems .. because the rest of
the stuff would be executed only if the total running market orders are 2 ! =D ..  and some forum guru please release this text from this src prison box ! ;)
 
Yine de hatırlamalısın. EA yalnızca devam eden işlemleri kapatır. Ticareti kendin açmalısın.