Gerçek bir hesapta MetaTrader 5 - sayfa 2

 
IgorM :

Yazım hatası yapmadınız, fiyattan bahsediyorum, SL ve TR'den değil mi? ve hangi fiyata bir piyasa emri sunucusu açmalıyım? bana verdiği fiyata mı yoksa benim kafama taktığım fiyata mı?

neden hemen sunucuya pozitif bir spread ile göndermiyorum ;)

Not: USDJPY: 82.49; 82.51000000000001 ; 82.49 - belki 82.55 hemen?

normalleştirilmiş fiyatlarla bir istek gönderme örneği

 //+------------------------------------------------------------------+
//| Функция открытия ордеров                                         |
//+------------------------------------------------------------------+
void OpenOpders( string sym, ENUM_ORDER_TYPE type)
  {
   int n= 0 ;
   bool res=true;
   while (res)
     {
      n++;
       Alert (n, " - Попытка открыть ордер: " ,TypeToStr(type), " на  " ,sym, ", Лот - " ,Lots);
       double Bid= SymbolInfoDouble (sym, SYMBOL_BID );
       double Ask= SymbolInfoDouble (sym, SYMBOL_ASK );
       int digit=( int ) SymbolInfoInteger (sym, SYMBOL_DIGITS );
       double price= 0.0 ;

       if (type== ORDER_TYPE_BUY )price= NormalizeDouble (Ask,digit);
       else if (type== ORDER_TYPE_SELL )price= NormalizeDouble (Bid,digit);

      request.action       = TRADE_ACTION_DEAL ;
      request.symbol       = sym;
      request.volume       = Lots;
      request.price        = price;
      request.deviation    = Slip;
      request.type         = type;
      request.type_filling = ORDER_FILLING_AON ;

       OrderSend (request,result);

       switch (Fun_Error(result.retcode))
        {
         case 0 :res=false; break ;
         case 1 :res=true; break ;
         case 2 :res=false; break ;
        }
     }
  }
//+------------------------------------------------------------------+
//| Функция обработки ошибок                                         |
//+------------------------------------------------------------------+
int Fun_Error( int Error)
  {
   switch (Error)
     {
       case 10004 : Alert ( "Реквота" ); return ( 1 );
       case 10006 : Alert ( "Запрос отвергнут" ); Sleep ( 3000 ); return ( 1 );
       case 10007 : Alert ( "Запрос отменен трейдером" );Work=false; return ( 0 );
       case 10008 : Alert ( "Ордер размещен" ); return ( 2 );
       case 10009 : Alert ( "Заявка выполнена" ); return ( 2 );
       case 10010 : Alert ( "Заявка выполнена частично" ); return ( 2 );
       case 10011 : Alert ( "Ошибка обработки запроса" ); return ( 1 );
       case 10012 : Alert ( "Запрос отменен по истечению времени" ); return ( 1 );
       case 10013 : Alert ( "Неправильный запрос" );Work=false; return ( 0 );
       case 10014 : Alert ( "Неправильный объем в запросе" );Work=false; return ( 0 );
       case 10015 : Alert ( "Неправильная цена в запросе" );Work=false; return ( 0 );
       case 10016 : Alert ( "Неправильные стопы в запросе" );Work=false; return ( 0 );
       case 10017 : Alert ( "Торговля запрещена" );Work=false; return ( 0 );
       case 10018 : Alert ( "Рынок закрыт" );Work=false; return ( 0 );
       case 10019 : Alert ( "Нет достаточных денежных средств для выполнения запроса" );Work=false; return ( 0 );
       case 10020 : Alert ( "Цены изменились" ); return ( 1 );
       case 10021 : Alert ( "Отсутствуют котировки для обработки запроса" ); Sleep ( 3000 ); return ( 1 );
       case 10022 : Alert ( "Неверная дата истечения ордера в запросе" );Work=false; return ( 0 );
       case 10023 : Alert ( "Состояние ордера изменилось" ); return ( 2 );
       case 10024 : Alert ( "Слишком частые запросы" );Work=false; return ( 0 );
       case 10025 : Alert ( "В запросе нет изменений" ); Sleep ( 3000 ); return ( 1 );
       case 10026 : Alert ( "Автотрейдинг запрещен сервером" );Work=false; return ( 0 );
       case 10027 : Alert ( "Автотрейдинг запрещен клиентским терминалом" );Work=false; return ( 0 );
       case 10028 : Alert ( "Запрос заблокирован для обработки" ); return ( 2 );
       case 10029 : Alert ( "Ордер или позиция заморожены" ); return ( 2 );
       case 10030 : Alert ( "Указан неподдерживаемый тип исполнения ордера по остатку" );Work=false; return ( 0 );
       case 10031 : Alert ( "Нет соединения с торговым сервером" ); Sleep ( 3000 ); return ( 1 );
       case 10032 : Alert ( "Операция разрешена только для реальных счетов" );Work=false; return ( 0 );
       case 10033 : Alert ( "Достигнут лимит на количество отложенных ордеров" ); return ( 2 );
       case 10034 : Alert ( "Достигнут лимит на объем ордеров и позиций для данного символа" ); return ( 2 );
       default :     Alert ( "Ошибка № - " ,Error);Work=false; return ( 0 );
     }
  }
//+------------------------------------------------------------------+
//| Функция преоброзования типа ордера в строку                      |
//+------------------------------------------------------------------+
string TypeToStr( ENUM_ORDER_TYPE type)
  {
   switch (type)
     {
       case    ORDER_TYPE_BUY :   return ( "BUY" );
       case    ORDER_TYPE_SELL : return ( "SELL" );
     }
   return ( "" );
  }
 
Renat :
Yani "platformun rutubeti" tezi hiçbir şekilde doğrulanmadı.

Platformun rutubetinden hiçbir yerde bahsetmedim - yazılarımı tekrar okuyun

Konuyla ilgili yorumlarımı dile getirdim - onları asılsız sayın, öyle olsun ama bence şirketiniz MT5 platformu altında brokerler için yazılım satıyor.

sergey1294 :

normalleştirilmiş fiyatlarla bir istek gönderme örneği

ATP, ancak alım satım ve sipariş açmak istediğim fiyat hakkında biraz farklı fikirlerim var, 82.47 ,82.45999999999999 ,82.47'yi normalleştirmeye çalışın

Sunucunun kendisi için 82.46'lık bir fiyat "icat edeceğinden" emin değilim, çünkü günlüklerde böyle bir fiyatı yoktu ve fiyat bir piyasa fiyatı değilse - buna ihtiyacım yok - günlüklerimde hatalarla değil sunucuda kalmasına izin verin

 
IgorM :

Platformun rutubetinden hiçbir yerde bahsetmedim - yazılarımı tekrar okuyun

Konuyla ilgili yorumlarımı dile getirdim - onları asılsız sayın, öyle olsun ama bence şirketiniz MT5 platformu altında brokerler için yazılım satıyor.

ATP, ancak alım satım ve sipariş açmak istediğim fiyat hakkında biraz farklı fikirlerim var, 82.47 ,82.45999999999999 ,82.47'yi normalleştirmeye çalışın

Sunucunun kendisi için 82.46'lık bir fiyat "icat edeceğinden" emin değilim, çünkü günlüklerde böyle bir fiyatı yoktu ve fiyat bir piyasa fiyatı değilse - buna ihtiyacım yok - günlüklerimde hatalarla değil sunucuda kalmasına izin verin

Ne yazık ki, gerçek sayıların temel aritmetiğinin ve bilgisayardaki temsilinin farkında değilsiniz. "Normalleştirilmemiş" fiyatların yanlış anlaşılmasının kökü budur.

82.45999999(9), 82.46 sayısının çift temsilidir

 
IgorM :

Platformun rutubetinden hiçbir yerde bahsetmedim - yazılarımı tekrar okuyun

Konuyla ilgili yorumlarımı dile getirdim - onları asılsız sayın, öyle olsun ama bence şirketiniz MT5 platformu altında brokerler için yazılım satıyor.

ATP, ancak alım satım ve sipariş açmak istediğim fiyat hakkında biraz farklı fikirlerim var, 82.47 ,82.45999999999999 ,82.47'yi normalleştirmeye çalışın

Sunucunun kendisi için 82.46'lık bir fiyat "icat edeceğinden" emin değilim, çünkü günlüklerde böyle bir fiyatı yoktu ve fiyat bir piyasa fiyatı değilse - buna ihtiyacım yok - günlüklerimde hatalarla değil sunucuda kalmasına izin verin

Fiyatlar hakkında fikirleriniz için ne olduğunu tam olarak anlamadım, genel olarak kabul edilen fiyatın beş veya dört ondalık basamağı vardır, bu nedenle bu işarete yönelik istekte fiyatı düşürmeniz gerekir. o zaman yürütme bir sorun olmayacak, ancak talep sırasında fiyat değiştiyse , hiçbir normalleşme yardımcı olmayacak, bir yeniden teklif alacaksınız, yeni bir fiyattan yeni bir talep göndermelisiniz.
 
Renat :

Ne yazık ki, gerçek sayıların temel aritmetiğinin ve bilgisayardaki temsilinin farkında değilsiniz. "Normalleştirilmemiş" fiyatların yanlış anlaşılmasının kökü budur.

82.45999999(9), 82.46 sayısının çift temsilidir

Tamam, yeniden okumak için zaman bulacağım, belki de çoktan unutmuş olduğum materyali, yani. böyle bir fiyat (82.45999999(9)) bir piyasa emri açmak için ticaret sunucusu tarafından kabul edilecek mi?

sergey1294 Lütfen geliştiricilerin size hazır örnekler ve sınıflar sağladığını unutmayın, en azından geliştiriciler tarafından sağlanan CTrade sınıfında, MQL5 Reference / Trade Functions / OrderSend'deki örneklerde olduğu gibi NormalizeDouble() işlevi yoktur.

Kaynakta, MT4 yardımında belirli örnekleri okursam, icat edip başlangıçta yanlış programlar yazmayacağım, OrderSend () örneği de fiyat normalleştirmesini içermiyor

 
IgorM :

Tamam, yeniden okumak için zaman bulacağım, belki de çoktan unutmuş olduğum materyali, yani. böyle bir fiyat (82.45999999(9)) bir piyasa emri açmak için ticaret sunucusu tarafından kabul edilecek mi?

Evet, onay akışındaki doğru/mevcut fiyat ise.


sergey1294 Lütfen geliştiricilerin size hazır örnekler ve sınıflar sağladığını unutmayın, en azından geliştiriciler tarafından sağlanan CTrade sınıfında, MQL5 Reference / Trade Functions / OrderSend'deki örneklerde olduğu gibi NormalizeDouble() işlevi yoktur.

Kaynakta belirli örnekleri okursam, icat etmeyeceğim ve başlangıçta yanlış programlar yazmayacağım.

Alım satım yapmak için normal Bid ve Ask kullanırsanız, bunlar her zaman normalleştirilir. Ancak, bir ticaret talebi göndermeden önce hesaplanan fiyatların (örneğin, duraklar) zaten normalleştirilmesi gerekir.

Standart CTrade yöntemleri, zorunlu gelen emir fiyatlarını normalleştirmez, çünkü bu kategorik olarak kabul edilemez - yukarıdaki seviye tarafından beyan edilen fiyatları değiştiremezsiniz.

 
Renat :
Evet, onay akışındaki doğru/mevcut fiyat ise.


İşlem yapmak için normal Teklif Et ve Sor kullanırsanız, bunlar her zaman normalleştirilir. Ancak, bir ticaret talebi göndermeden önce hesaplanan fiyatların (örneğin, duraklar) zaten normalleştirilmesi gerekir.

Standart CTrade yöntemleri, zorunlu gelen emir fiyatlarını normalleştirmez, çünkü bu kategorik olarak kabul edilemez - yukarıdaki seviye tarafından beyan edilen fiyatları değiştiremezsiniz.

TEŞEKKÜR! iş için almayın, MT5 referans kitabında bunu birkaç kez belirtin, böylece bir yanlış anlaşılma olmaz ve hemen okumak için yardım gönderebilirsiniz :)

Not: SL ve TR hakkında bilgim var ama hatırlamıyorum, yardımda okumadım ya da forumda öğrendim

 
IgorM :

TEŞEKKÜR! iş için almayın, MT5 referans kitabında birkaç kez belirtin, böylece bir yanlış anlaşılma olmaz ve hemen okumak için yardım gönderebilirsiniz :)

Evet, belgeleri sürekli olarak güncelliyor ve açıklamalar ekliyoruz.
 
IgorM :

Bu forumu sürekli okuyorum ve çoğu zaman düşünceli ve bilgilendirici yazılarınıza hayran kalıyorum;)

Konuya göre, demo hesaplardaki fiyatların mikro gerçeklerden farklı olduğundan şüpheliyim, ancak bir demo hesapta Yönetici tarafından belirtilen şirketlerde çok sık normalize edilmemiş fiyatlar var, güçlü bir hareketle - bir sipariş açıp kapatamazsınız Onlar, düzen görmek istiyorum, sonra ne olacak, MT5'i suçlama

Zevk ve renk için yoldaş yok (halk bilgeliği) - "normalleştirilmemiş fiyat" birinin çalışmasını engelliyor, ancak kişisel olarak bunu büyük bir sorun olarak görmüyorum (uzun süredir otlozhnik kullandığımdan ve bunlar fiyatlar benim için güçlü bir sorun değil). Ancak benim için sorun , test cihazında veya diğer benzer anlarda OnTimer () çalışma isteksizliği gibi şeyler.

Ancak bu girdilerle bile, bir cent hesabında işlem yapmak için bir terminal seçerken (200$ depozito ile), kişisel olarak seçimimi MT5 lehine yapacağım.

TÜM GÜNCEL HATALARI İÇİN!

 
Interesting :

Zevk ve renk için yoldaş yok (halk bilgeliği) - "normalleştirilmemiş fiyat" birinin çalışmasını engelliyor, ancak kişisel olarak bunu büyük bir sorun olarak görmüyorum (uzun süredir otlozhnik kullandığımdan ve bunlar fiyatlar benim için güçlü bir sorun değil). Ancak benim için sorun, test cihazında veya diğer benzer anlarda OnTimer () çalışma isteksizliği gibi şeyler.

Bu hatamız, başarısız optimizasyonun bir sonucuydu ve yayınlanan 358 derlemesinde zaten düzeltildi.