Robotla kim yardımcı olabilir, neden çalışmıyor? - sayfa 6

 
Ördek en azından hangi hatayı gösteriyor?
 

işte mt4 ecn, ndd, stp için işlevim...

Bir yılda tek bir hata yok

//+------------------------------------------- ------------------------------+

//| Sipariş açma işlevi (BeerGod) |

//+------------------------------------------- ------------------------------+

//| Seçenekler: |

//| sy - enstrüman adı ("" - geçerli sembol) |

//| operasyon - operasyon |

//| ll - çok |

//| sl - durdurma seviyesi |

//| tp - seviye al |

//| mn - MagicNumber |

//+------------------------------------------- ------------------------------+


bool OpenPosition(dize sy, int op, çift ll, çift sl=0, çift tp=0, int MagicNumber=0)

{

double MinLl = MarketInfo(Symbol(),MODE_MINLOT);

double MaxLl = MarketInfo(Symbol(),MODE_MAXLOT);

ll = NormalizeDouble(ll,2);

if (ll < MinLl) ll = MinLl; yoksa ll = ll;

if (ll > MaxLl) ll = MaxLl; yoksa ll = ll;

if (op == 0) // BUY'ı aç

{

// Ücretsiz fonların kullanılabilirliğini kontrol edin

if((AccountFreeMarginCheck(sy,OP_BUY,ll)<=0) || (GetLastError()==134))

{

Print(sy," ",ll," Siparişi açmak imkansız Satın al, yeterli para yok .");

dönüş(0);

}

Yeniler();


// Bir sipariş aç

int biletbuy = OrderSend(sy,OP_BUY,ll,MarketInfo(sy,MODE_ASK),Slippage,0,0,Comments,MagicNumber,0,BuyColor);

if(bilet satın al<0)

Print(sy," OpenPosition. OrderSend Buy başarısız #",GetLastError());

başka

Print(sy, "OpenPosition. SiparişGönder Satın Alım Başarıyla");


// Uyku(Duraklat);


// Siparişi değiştir (kar al ve zararı durdur)

if (sl !=0 || tp !=0)

{

//--- SL ve TP fiyatlarının hesaplanan değerleri normalleştirilmeli

double BSLoss = NormalizeDouble(MarketInfo(sy,MODE_ASK)-sl*MarketInfo(sy,MODE_POINT),(int)MarketInfo(sy,MODE_DIGITS));

double BTProfit = NormalizeDouble(MarketInfo(sy,MODE_ASK)+tp*MarketInfo(sy,MODE_POINT),(int)MarketInfo(sy,MODE_DIGITS));

//--- Girilen değerler sıfır ise, değişiklik maliyetini sıfır ile değiştirin

if (sl == 0) BSLoss = 0;

if (tp == 0) BTProfit = 0;


bool resbuy = OrderModify (ticketbuy,OrderOpenPrice(),BSLoss,BTProfit,0,StopColor);

if(!tekrar satın al)

Print(sy," OpenPosition. OrderModify Buy fail #",GetLastError());

başka

Print(sy, "OpenPosition. OrderModify Satın Alım Başarıyla");

}

}


if (op == 1) // Satışı Aç

{

// Ücretsiz fonların kullanılabilirliğini kontrol edin

if((AccountFreeMarginCheck(sy,OP_SELL,ll)<=0) || (GetLastError()==134))

{

Print(sy," ",ll," Sat emrini açmak imkansız, yeterli para yok.");

dönüş(0);

}

Yeniler();


// Bir sipariş aç

int ticketell = OrderSend(sy,OP_SELL,ll,MarketInfo(sy,MODE_BID),Slippage,0,0,Comments,MagicNumber,0,SellColor);

if(bilet satışı<0)

Print(sy," OpenPosition. OrderSend Sell fail #",GetLastError());

başka

Print(sy, "OpenPosition. SiparişGönder Satış Başarıyla");


// Uyku(Duraklat);


// Siparişi değiştir (kar al ve zararı durdur)

if (sl !=0 || tp !=0)

{

//--- SL ve TP fiyatlarının hesaplanan değerleri normalleştirilmeli

double SSLoss = NormalizeDouble(MarketInfo(sy,MODE_BID)+sl*MarketInfo(sy,MODE_POINT),(int)MarketInfo(sy,MODE_DIGITS));

double STProfit = NormalizeDouble(MarketInfo(sy,MODE_BID)-tp*MarketInfo(sy,MODE_POINT),(int)MarketInfo(sy,MODE_DIGITS));

//--- Girilen değerler sıfır ise, değişiklik maliyetini sıfır ile değiştirin

if (sl == 0) SSLoss = 0;

if (tp == 0) STKar = 0;


bool ressell = OrderModify(ticketsell,OrderOpenPrice(),SSLoss,STProfit,0,StopColor);

eğer(!resell)

Print(sy," OpenPosition. OrderModify Sell fail #",GetLastError());

başka

Print(sy, "OpenPosition. OrderModify Sat başarılı");

}

}

dönüş(Doğru);

}

//Son

 
PS Moderatörleri, kod buton aracılığıyla girilmez.
 
Vladimir Zubov :
PS Moderatörleri, kod buton aracılığıyla girilmez.

Kodu girerek Skype üzerinden ücretsiz (ücretsiz) online ders veriyorum :)

 if (sl == 0 ) SSLoss = 0 ;
 
Karputov Vladimir :

Kodu girerek Skype üzerinden ücretsiz (ücretsiz) online ders veriyorum :)

 //+----------------------------------------------------------------------------+
//|    Функция открытия ордера  (BeerGod)                                      |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    sy - наименование инструмента   ("" - текущий символ)                   |
//|    op - операция                                                           |
//|    ll - лот                                                                |
//|    sl - уровень стоп                                                       |
//|    tp - уровень тейк                                                       |
//|    mn - MagicNumber                                                        |
//+----------------------------------------------------------------------------+

bool OpenPosition( string sy, int op, double ll, double sl= 0 , double tp= 0 , int MagicNumber= 0 )
{
   double MinLl = MarketInfo( Symbol (),MODE_MINLOT);
   double MaxLl = MarketInfo( Symbol (),MODE_MAXLOT);
   ll = NormalizeDouble (ll, 2 );
   if (ll < MinLl) ll = MinLl; else ll = ll;
   if (ll > MaxLl) ll = MaxLl; else ll = ll;
   
   if (op == 0 ) // Открытие BUY
   {
       // Проверяем доступность свободных средств
       if ((AccountFreeMarginCheck(sy,OP_BUY,ll)<= 0 ) || ( GetLastError ()== 134 ))
            {
               Print (sy, " " ,ll, " It is impossible to open the order Buy, not enough money." );
               return ( 0 );
            }
      RefreshRates();

       // Открываем ордер
       int ticketbuy = OrderSend (sy,OP_BUY,ll,MarketInfo(sy,MODE_ASK),Slippage, 0 , 0 ,Comments,MagicNumber, 0 ,BuyColor);
         if (ticketbuy< 0 )
         Print (sy, " OpenPosition. OrderSend Buy fail #" , GetLastError ());
         else
         Print (sy, " OpenPosition. OrderSend Buy successfully" );

       // Sleep (Pause);

       // Модифицируем ордер (выставляем тейкпрофит и стоплосс)
       if (sl != 0 || tp != 0 )
            {
             //--- Вычисленные значения цен SL и TP должны быть нормализованы
             double BSLoss = NormalizeDouble (MarketInfo(sy,MODE_ASK)-sl*MarketInfo(sy,MODE_POINT),( int )MarketInfo(sy,MODE_DIGITS));
             double BTProfit = NormalizeDouble (MarketInfo(sy,MODE_ASK)+tp*MarketInfo(sy,MODE_POINT),( int )MarketInfo(sy,MODE_DIGITS));
             //--- Если входящие значения ноль то заменяем цену модификации на ноль
             if (sl == 0 ) BSLoss = 0 ;
             if (tp == 0 ) BTProfit = 0 ;

             bool resbuy = OrderModify (ticketbuy,OrderOpenPrice(),BSLoss,BTProfit, 0 ,StopColor);
                   if (!resbuy)
                     Print (sy, " OpenPosition. OrderModify Buy fail #" , GetLastError ());
                   else
                     Print (sy, " OpenPosition. OrderModify Buy successfully" );
            }
   }

   if (op == 1 ) // Открытие Sell
   {
       // Проверяем доступность свободных средств
       if ((AccountFreeMarginCheck(sy,OP_SELL,ll)<= 0 ) || ( GetLastError ()== 134 ))
            {
               Print (sy, " " ,ll, " It is impossible to open the order Sell, not enough money." );
               return ( 0 );
            }
      RefreshRates();

       // Открываем ордер
       int ticketsell = OrderSend (sy,OP_SELL,ll,MarketInfo(sy,MODE_BID),Slippage, 0 , 0 ,Comments,MagicNumber, 0 ,SellColor);
         if (ticketsell< 0 )
         Print (sy, " OpenPosition. OrderSend Sell fail #" , GetLastError ());
         else
         Print (sy, " OpenPosition. OrderSend Sell successfully" );

       // Sleep (Pause);

       // Модифицируем ордер (выставляем тейкпрофит и стоплосс)
       if (sl != 0 || tp != 0 )
            {
             //--- Вычисленные значения цен SL и TP должны быть нормализованы
             double SSLoss = NormalizeDouble (MarketInfo(sy,MODE_BID)+sl*MarketInfo(sy,MODE_POINT),( int )MarketInfo(sy,MODE_DIGITS));
             double STProfit = NormalizeDouble (MarketInfo(sy,MODE_BID)-tp*MarketInfo(sy,MODE_POINT),( int )MarketInfo(sy,MODE_DIGITS));
             //--- Если входящие значения ноль то заменяем цену модификации на ноль
             if (sl == 0 ) SSLoss = 0 ;
             if (tp == 0 ) STProfit = 0 ;

             bool ressell = OrderModify (ticketsell,OrderOpenPrice(),SSLoss,STProfit, 0 ,StopColor);
                   if (!ressell)
                     Print (sy, " OpenPosition. OrderModify Sell fail #" , GetLastError ());
                   else
                     Print (sy, " OpenPosition. OrderModify Sell successfully" );
            }
   }
return (True);
}
//End
 
Karputov Vladimir :

Kodu girerek Skype üzerinden ücretsiz (ücretsiz) online ders veriyorum :)

Kodu yeni eklediysem, evet, ancak daha fazlasını yazarsam kod kaybolur
 
PHP & MQL'yi hesaplarken bir yerde bir hata var, eğer bir montajcıya ihtiyacınız varsa, o zaman yardımcı olurum.
 
GIM :
Sayesinde!

hazır, kodla ilgili sorularınız varsa, yazın, ayrıca kişisel veya skype'ta da yapabilirsiniz.

Dosyalar:
GIM.mq4  9 kb
 
Sergey Gritsay :

hazır, kodla ilgili sorularınız varsa, yazın, ayrıca kişisel veya skype'ta da yapabilirsiniz.

Uyarı şu mesajla çıkıyor: Fiyat yok. Yeni bir tik bekliyorum...
 
GIM :
Uyarı şu mesajla çıkıyor: Fiyat yok. Yeni bir tik bekliyorum...

ve fiyat yoksa işlem açılamaz. Demo hesabımda sorunsuz çalıştı, ilk denemede bir anlaşma açıldı. Daha fazla ayrıntıya ihtiyacınız var