Dziad nie zamyka Orderdelete

O jezykach programowania w platformach i nie tylko.
Awatar użytkownika
NiceFox
Pasjonat
Pasjonat
Posty: 454
Rejestracja: 05 lis 2009, 13:22

Dziad nie zamyka Orderdelete

Nieprzeczytany post autor: NiceFox »

2 ostatnie linijki nie działają powinien zamykać zlecenie oczekujące w pętli do skutku

Kod: Zaznacz cały

{
              
         if(OrderType()==OP_BUY)
         OrderClose(OrderTicket(),OrderLots(),MarketInfo(OrderSymbol(),MODE_BID),5,Violet);
       if(OrderType()==OP_SELL)
        OrderClose(OrderTicket(),OrderLots(),MarketInfo(OrderSymbol(),MODE_ASK),5,Violet);
       // if(OrderType()>OP_SELL)
        OrderDelete(OrderTicket());
          while (OrderDelete(OrderTicket()) == -1)
  break;                 
     }
Pieniądze rosną na drzewie cierpliwości.

Awatar użytkownika
Tig3r
Przyjaciel Forum
Przyjaciel Forum
Posty: 2310
Rejestracja: 02 sty 2008, 10:46

Nieprzeczytany post autor: Tig3r »

a gdzie OrderSelect ?
======================================================
Nie głupi ten co nie wie, lecz ten który nie chce się nauczyć..

Awatar użytkownika
NiceFox
Pasjonat
Pasjonat
Posty: 454
Rejestracja: 05 lis 2009, 13:22

Nieprzeczytany post autor: NiceFox »

teraz to tak wygląda chodzi, ale OrderClose bardzo długo oblicza. Czy można z tego na dole OrderSelect zrezygnować na rzecz tego wyżej?

Kod: Zaznacz cały

double cnt_1;
double total_1;
double magic_number_1=1;
double magic_number_2=2;
double magic_number_3=3;
double magic_number_4=4; //magic po którym zakaz handlowania
double TP1 =-6;
double TP2 =100;
double TP3 =1;
bool handluj; 


  
 for (cnt_1 = 0 ; cnt_1 <= total_1 ; cnt_1++)
      {
         OrderSelect(0,SELECT_BY_POS,MODE_TRADES);
         
        
         
     if ( OrderMagicNumber() == magic_number_4)
     
      handluj=false; else handluj=true; //spr czy są zlecenia z magic 4   
        
         
              
        if ( OrderMagicNumber() ==  magic_number_1 && handluj== true && OrderProfit() >= TP1) 

        
         
     {
              Alert ("11111111111");
         if(OrderType()==OP_BUY)
         OrderClose(OrderTicket(),OrderLots(),MarketInfo(OrderSymbol(),MODE_BID),5,Violet);
       if(OrderType()==OP_SELL)
        OrderClose(OrderTicket(),OrderLots(),MarketInfo(OrderSymbol(),MODE_ASK),5,Violet);
       //===================================== zamyka do skutku wszystkie oczekujące==============================
       for (int c =OrdersTotal () -1; c>= 0;c--)
       OrderSelect( c,SELECT_BY_POS,MODE_TRADES);
       OrderDelete(OrderTicket());
        while (OrderDelete(OrderTicket()) == -1)
  break;
         
          }
Pieniądze rosną na drzewie cierpliwości.

Awatar użytkownika
Tig3r
Przyjaciel Forum
Przyjaciel Forum
Posty: 2310
Rejestracja: 02 sty 2008, 10:46

Nieprzeczytany post autor: Tig3r »

NiceFox pisze:total_1
wychodzi 0 więc co ty liczysz? pętla się nie nigdy nie odpali

Poza tym
OrderSelect(0,SELECT_BY_POS,MODE_TRADES);
Wybierasz więc zawsze zlecenia 0

To nie ma ładu ani składu
Aby zadziałało przed For powinno być:

Kod: Zaznacz cały

total_1=OrdersTotal(); 
a OrderSelect powinno wyglądać

Kod: Zaznacz cały

OrderSelect(cnt_1,SELECT_BY_POS,MODE_TRADES);
a samo For powinno być

Kod: Zaznacz cały

for (cnt_1 =  total_1 ; cnt_1>=0 ; cnt_1--) 
czyli lecisz ze zleceniami i zamykasz je od końca (tak aby nic z kolejki nie wyleciało gdy skasujesz jakieś);
======================================================
Nie głupi ten co nie wie, lecz ten który nie chce się nauczyć..

rrozak
Stały bywalec
Stały bywalec
Posty: 76
Rejestracja: 19 mar 2010, 16:43

Nieprzeczytany post autor: rrozak »

w ogóle ten kod to chaos jak przed Wielkim Wybuchem ;)
Orły nie jedzą much

crn
Gaduła
Gaduła
Posty: 117
Rejestracja: 17 mar 2009, 22:07

Nieprzeczytany post autor: crn »

nie do konca jestem pewny zamyslu, ale to powinno dzialac (nie testowlaem tego lae powinno)

for( int i = OrdersTotal(); i>=0; i--)
{
OrderSelect( i,SELECT_BY_POS,MODE_TRADES)
if( OrderMagicNumber() == mn)
{
OrderDelete(OrderTicket()) ;
}
}




}

ODPOWIEDZ