[ARŞİV!] Forumu kirletmemek için herhangi bir acemi sorusu. Profesyonel, kaçırmayın. Sensiz hiçbir yerde - 4. - sayfa 390

 
7777877 :

Güzel gün. Soru şu: MarketInfo fonksiyon istek tanımlayıcıları arasında neden 1 alış lotu açmak için gerekli serbest teminat miktarını belirlemek için MODE_MARGINREQUIRED parametresi varken 1 satış lotu açmak için gerekli serbest teminat miktarını belirlemek için bir parametre yok ? Ve bu durumda, belirli bir DC'de satışa 1 lot açmak için ne kadar ücretsiz fona ihtiyacınız olduğunu nasıl belirleyebilirsiniz?

Not: Forumu kirletmemek adına cevabınız için şimdiden teşekkür ederim.

Satmak için biraz daha az para gerekiyor, bu yüzden pratikte bu parametreyi kullanabilirsiniz.
 

Uzmanları klasörlere dağıtma ve her şeyi tek bir ...\experts klasöründe saklamama fırsatı olup olmadığını söyleme.

Ve böylece bu klasörlerden çalışırlar.

Ve sonra bir uzmanın 20 versiyonu, diğerinin 20 versiyonu var ve tüm dosya setini bulmak zaten imkansız.

 

Tünaydın.

arama yardımcı olmadı.

belki birileri benzer bir senaryo gördü.

öz: komut dosyası şunları belirtir: sembol, alım/satım, hacim

5-7 bu tür alanlara ihtiyaç vardır.

hacmi 0'a eşit olmayan birkaç sembolün aynı anda açılması için.

teşekkür etmek.

UV ile

 
Güzel gün. Size bir sorum var... Stokastik (5,14,3) ile giriş ve sadece farklı bir dönem (5,3,3) ile stokastik ile çıkış. Öyleyse, ters sinyalde değil de stokastikte nasıl çıkış yapabileceğinizi anlamıyorum?
Bir sorunum var ve nasıl çözüleceğine dair hiçbir fikrim yok, açıklamaya çalışacağım.
Yani gönderdiğim kodda 2 fonksiyon var
 //+------------------------------------------------------------------+
//| подготовить массив тикетов для закрытия |
//+------------------------------------------------------------------+
void PrepareTicketsToClose( int signal, bool Revers, int & ticketsClose[][ 2 ], double & lots[], double arrayTickets[][ 9 ])
{
int size= ArrayRange (arrayTickets, 0 );
//----
if (size== 0 ) return ;

int i,type,ticket,closeSize;
for (i= 0 ;i<size;i++)
{
type=arrayTickets[i][ 1 ];
// если тип ордера не рыночный, то пропускаем
if (type>OP_SELL) continue ;

if (Revers) // перевернем тип рыночного ордера
{
if (type==OP_BUY) type=OP_SELL; else type=OP_BUY;
}

// тут решаем для каждого открытого ордера его судьбу
// оставить в рынке или добавить в массив на закрытие
if (type==OP_BUY)
{
//
// код разрешающий оставить покупку

// как пример
if (signal==OP_BUY) continue ;
}

if (type==OP_SELL)
{
//
// код разрешающий оставить продажу

// как пример
if (signal==OP_SELL) continue ;
}

closeSize= ArrayRange (ticketsClose, 0 );
ArrayResize (ticketsClose,closeSize+ 1 );
ArrayResize (lots,closeSize+ 1 );
ticketsClose[closeSize][ 0 ] = arrayTickets[i][ 0 ]; // # тикета
ticketsClose[closeSize][ 1 ] = arrayTickets[i][ 1 ]; // тип ордера

// здесь укажем сколько лотов нужно закрыть
lots[closeSize] = arrayTickets[i][ 2 ]; // закрываемый объем
// можно закрывать частично, тогда нужно переписать строку сверху
}
//----
return ;
}

//+------------------------------------------------------------------+
//| Закрывает ордера с указанными тикетами |
//+------------------------------------------------------------------+
void CloseMarketOrders( int ticketsArray[][ 2 ], double lotsArray[])
{
//----
int i,size= ArrayRange (ticketsArray, 0 );
if (size== 0 ) return ;

int ticket,type;
double lots;
bool res;

int total= OrdersTotal ();

for (i= 0 ;i<size;i++)
{
ticket = ticketsArray[i][ 0 ];
type = ticketsArray[i][ 1 ];
lots = lotsArray[i];
RefreshRates (); // на всякий случай обновим сведения о рыночном окружении

// блок закрытия покупок
if (type==OP_BUY)
{
res = OrderClose (ticket,lots,Bid,Slippage, Orange );
if (!res)
{
Print ( "Не удалось закрыть ордер в покупку #" ,ticket, "! Ошибка №" , GetLastError ());
// дальнейшая обработка ошибки, написать самостоятельно
}
}

// блок закрытия продаж
if (type==OP_SELL)
{
res = OrderClose (ticket,lots,Ask,Slippage, Orange );
if (!res)
{
Print ( "Не удалось закрыть ордер в продажу #" ,ticket, "! Ошибка №" , GetLastError ());
// дальнейшая обработка ошибки, написать самостоятельно
}
}

}
//----
return ;
}
Void ReadTicketsToClose(int signal, bool Revers, int & TicketClose[][2], double & lot[],double arrayTickets[][9]) işlevinde, siparişten ayrılmaya karar vereceğiniz bir koşul ayarlamanız gerekir yada kapat...
Koşulları ayarlamayı denedim ama işe yaramıyor...
Belki birileri bakıp bu işlevlerde bir hata olup olmadığını gösterir ya da ben batırdım ....
Dosyalar:
 
Snegovik :

Tünaydın.

arama yardımcı olmadı.

belki birileri benzer bir senaryo gördü.

öz: komut dosyası şunları belirtir: sembol, alım/satım, hacim

5-7 bu tür alanlara ihtiyaç vardır.

hacmi 0'a eşit olmayan birkaç sembolün aynı anda açılması için.

teşekkür etmek.

UV ile


Şey, ifadeler - şeytan bacağını kıracak. Soru soran ne soruyor...
 
belous :
Güzel gün. Size bir sorum var... Stokastik (5,14,3) ile giriş ve sadece farklı bir dönem (5,3,3) ile stokastik ile çıkış. Öyleyse, ters sinyalde değil de stokastikte nasıl çıkış yapabileceğinizi anlamıyorum?
Bir sorunum var ve nasıl çözüleceğine dair hiçbir fikrim yok, açıklamaya çalışacağım.
Yani gönderdiğim kodda 2 fonksiyon var
Void ReadTicketsToClose(int signal, bool Revers, int & TicketClose[][2], double & lot[],double arrayTickets[][9]) işlevinde, siparişten ayrılmaya karar vereceğiniz bir koşul ayarlamanız gerekir yada kapat...
Koşulları ayarlamayı denedim ama işe yaramıyor....
Belki birileri bakıp bu işlevlerde bir hata olup olmadığını gösterir ya da ben batırdım ....


Faydalı olabilir. Kodunuza bakmadım.
Kim fonksiyonları.

   //========================================================================================================================
   // Закрытие открытых позиций на продажу 
   //-------------------------------------------------------------------------------------------------------------------------
   if (ExistPositions( NULL , OP_SELL, Magic, 0 ) == true) //если открыта позиция sell
  {
     if () // условие на закритие 
    {
      ClosePosFirstProfit( NULL , OP_SELL, Magic); //закрываем позицию
    }
  } 


//+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,  http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+
//|  Версия   : 06.03.2008                                                     |
//|  Описание : Возвращает флаг существования позиций                          |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    sy - наименование инструмента   (""   - любой символ,                   |
//|                                     NULL - текущий символ)                 |
//|    op - операция                   (-1   - любая позиция)                  |
//|    mn - MagicNumber                (-1   - любой магик)                    |
//|    ot - время открытия             ( 0   - любое время открытия)           |
//+----------------------------------------------------------------------------+
bool ExistPositions( string sy= "" , int op=- 1 , int mn=- 1 , datetime ot= 0 ) {
   int i, k= OrdersTotal ();

   if (sy== "0" ) sy= Symbol ();
   for (i= 0 ; i<k; i++) {
     if ( OrderSelect (i, SELECT_BY_POS, MODE_TRADES)) {
       if ( OrderSymbol ()==sy || sy== "" ) {
         if ( OrderType ()==OP_BUY || OrderType ()==OP_SELL) {
           if (op< 0 || OrderType ()==op) {
             if (mn< 0 || OrderMagicNumber ()==mn) {
               if (ot<= OrderOpenTime ()) return (True);
            }
          }
        }
      }
    }
  }
   return (False);
}
//+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,  http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+
//|  Версия  : 19.02.2008                                                      |
//|  Описание: Закрытие одной предварительно выбранной позиции                 |
//+----------------------------------------------------------------------------+
void ClosePosBySelect() {
   bool    fc;
   color   clClose;
   double ll, pa, pb, pp;
   int     dg= MarketInfo ( OrderSymbol (), MODE_DIGITS), err, it;

   if ( OrderType ()==OP_BUY || OrderType ()==OP_SELL) {
     for (it= 1 ; it<=NumberOfTry; it++) {
       if (! IsTesting () && (! IsExpertEnabled () || IsStopped ())) //break;
       while (! IsTradeAllowed ()) Sleep ( 5000 );
       RefreshRates ();
      pa= MarketInfo ( OrderSymbol (), MODE_ASK);
      pb= MarketInfo ( OrderSymbol (), MODE_BID);
       if ( OrderType ()==OP_BUY) {
        pp=pb; clClose=clCloseBuy;
      } else {
        pp=pa; clClose=clCloseSell;
      }
      ll= OrderLots ();
      pp= NormalizeDouble (pp, dg);
      fc= OrderClose ( OrderTicket (), ll, pp, Slippage, clClose);
       if (fc) {
         if (UseSound) PlaySound (SoundSuccess); //break;
      } else {
        err= GetLastError ();
         if (UseSound) PlaySound (SoundError);
         if (err== 146 ) while ( IsTradeContextBusy ()) Sleep ( 1000 * 11 );
         Print ( "Error(" ,err, ") Close " ,GetNameOP( OrderType ()), " " ,
              ErrorDescription(err), ", try " ,it);
         Print ( OrderTicket (), "  Ask=" ,pa, "  Bid=" ,pb, "  pp=" ,pp);
         Print ( "sy=" , OrderSymbol (), "  ll=" ,ll, "  sl=" , OrderStopLoss (),
               "  tp=" , OrderTakeProfit (), "  mn=" , OrderMagicNumber ());
         Sleep ( 1000 * 5 );
      }
    }
  } else Print ( "Некорректная торговая операция. Close " ,GetNameOP( OrderType ()));
}
//+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,  http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+
//|  Версия   : 19.02.2008                                                     |
//|  Описание : Закрытие позиций по рыночной цене сначала прибыльных           |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    sy - наименование инструмента   (""   - любой символ,                   |
//|                                     NULL - текущий символ)                 |
//|    op - операция                   (-1   - любая позиция)                  |
//|    mn - MagicNumber                (-1   - любой магик)                    |
//+----------------------------------------------------------------------------+
void ClosePosFirstProfit( string sy= "" , int op=- 1 , int mn=- 1 ) {
   int i, k= OrdersTotal ();
   if (sy== "0" ) sy= Symbol ();

   // Сначала закрываем прибыльные позиции
   for (i=k- 1 ; i>= 0 ; i--) {
     if ( OrderSelect (i, SELECT_BY_POS, MODE_TRADES)) {
       if (( OrderSymbol ()==sy || sy== "" ) && (op< 0 || OrderType ()==op)) {
         if ( OrderType ()==OP_BUY || OrderType ()==OP_SELL) {
           if (mn< 0 || OrderMagicNumber ()==mn) {
             if ( OrderProfit ()+ OrderCommission ()+ OrderSwap ()> 0 ) ClosePosBySelect();
          }
        }
      }
    }
  }
   // Потом все остальные
  k= OrdersTotal ();
   for (i=k- 1 ; i>= 0 ; i--) {
     if ( OrderSelect (i, SELECT_BY_POS, MODE_TRADES)) {
       if (( OrderSymbol ()==sy || sy== "" ) && (op< 0 || OrderType ()==op)) {
         if ( OrderType ()==OP_BUY || OrderType ()==OP_SELL) {
           if (mn< 0 || OrderMagicNumber ()==mn) ClosePosBySelect();
        }
      }
    }
  }
}
 
 
belous :
Güzel gün. Size bir sorum var... Stokastik (5,14,3) ile giriş ve sadece farklı bir dönem (5,3,3) ile stokastik ile çıkış. Öyleyse, ters sinyalde değil de stokastikte nasıl çıkış yapabileceğinizi anlamıyorum?

IMHO, kapanış için bir dizi bilet oluşturmazdım, ancak piyasa emirleri döngüsünde her siparişi kontrol ettim , biletini olası koşulları kontrol ederek kapanış fonksiyonunun girişine gönderdim.

 
Teklif bir noktada 0 olabilir mi?
 
YOUNGA :
Teklif bir noktada 0 olabilir mi?
Kontrol etmek zor mu yoksa tembel mi? Soru sormak daha kolay. Teklif fiyatı sıfır olabilir mi? Belki satılık bir şey yoksa8-(
 
drknn :

Şey, ifadeler - şeytan bacağını kıracak. Soru soran ne soruyor...


ikinci alımda aynı anda bir sembolde satışı açan komut dosyaları var.

ve cari fiyatlarla her bir sembol için belirtilen hacim olan 7-10 sembolde aynı anda sat/al'ı açabilen bir komut dosyasıyla ilgileniyorum.

Misal:

EURUSD 1 satmak

USDUSD 1.5 satın al

USDCAD 1.2 satmak

AUDUSD 1.1 satın al

NZDUSD 2 satın al

USDCHF 3 satın al

MultiOrders betiği neredeyse mükemmel, semboller için sadece 5 alan var. ve daha fazlasını nasıl ekleyeceğinizi bilmiyorum.