Qualsiasi domanda da principiante, per non ingombrare il forum. Professionisti, non passate oltre. Da nessuna parte senza di te - 6. - pagina 375

 
okidoki543:
Se qualcuno vuole aiutarmi (vedi sopra), sono aperto alla collaborazione.
Su base commerciale, nessun problema, ci sarà una coda di persone che vogliono aiutare. Altrimenti... Inizia a scrivere da solo e l'aiuto arriverà.
 
Ekburg:

mettere OrderStopLoss() invece di sl


non ha funzionato...

void VirtualTral(int Dist_Tral,int Start_Tral,int Magic,int SL)
{

double dist=Dist_Tral;
double start=Start_Tral;
double priceopen=OrderOpenPrice();
double sl=OrderStopLoss();
 
if(OrdersTotal()<=0)
ObjectDelete("Stop"); 

int i, k=OrdersTotal();

  for (i=k-1; i>=0; i--) 
   {
    if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
     {  

       if ((NormalizeDouble(priceopen+start*Point,Digits)<=Bid)&&(NormalizeDouble(Bid-sl*Point,Digits)>NormalizeDouble(dist*Point,Digits)))
         {                    
                sl=NormalizeDouble(Bid-dist*Point,Digits);
                Print(+sl);
                ObjectCreate("Stop",OBJ_HLINE,0,D'2013.02.20 12:30',sl);                                                         
                ObjectSet("Stop",OBJPROP_STYLE,1);                                                                                         
                ObjectMove("Stop",0,D'2013.02.20 12:30',sl);                                                                                                 
                if (NormalizeDouble(sl*Point,Digits) >=Bid)
             {
                Print("Закрываем");
                OrderClose(OrderTicket(),OrderLots(),Bid,50,Blue);
             }
         }               
      }
   }
}

Sembra funzionare, ma c'è qualcosa che non viene considerato...

 
alexey1979621:
Sì, ora lo fa, ma apre un mucchio di trade, e ho bisogno solo di due trade da aprire su determinate coppie, diciamo per EURAUD e AUDUSD.

L'algoritmo è più semplice di un albero di feltro:

1. Se non ci sono posizioni su EuroAudi, apri una posizione,

2. Se non c'è una posizione su AudiBucks - apri una posizione.

 
vadynik:


non ha funzionato...

sembra che dovrebbe funzionare, ma c'è qualcosa che non è stato considerato...

Il priceopen non dovrebbe essere preso nel ciclo già dopo che l'ordine è stato selezionato?
 
artmedia70:

L'algoritmo è più semplice di un albero di feltro:

1. Se non ci sono posizioni sull'EuroAudi, apri una posizione,

2. Se non c'è una posizione su AudiBucks - apri una posizione.


No, Artemis, non funziona così nella mia situazione.
extern double lotAU=1.3;
extern double lotEA=1.0;
extern double Profit=30;
extern int Operation=0;
extern string Сomment           = "KVAZ";
extern int Magic                = 1111;


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

double prof;
double bidEA = MarketInfo("EURAUD",MODE_BID);
double askEA = MarketInfo("EURAUD",MODE_ASK);
double bidAU = MarketInfo("AUDUSD",MODE_BID);
double askAU = MarketInfo("AUDUSD",MODE_ASK);

string symEA = "EURAUD";
string symAU = "AUDUSD";

for(int i=OrdersTotal()-1; i>=0; i--)
{
 OrderSelect(i,SELECT_BY_POS);
 prof=prof+OrderProfit();
 Print("Profit="+prof);
}
if(prof>=Profit)
{
 for(i=OrdersTotal()-1; i>=0; i--)
 {
  OrderSelect(i,SELECT_BY_POS);
  {
  if(OrderSymbol()!=Symbol() || OrderMagicNumber()!=Magic) continue;
  OrderClose(OrderTicket(),OrderLots(),OrderClosePrice(),5,0);
  }
 }
}

 if(Operation==0)
 {
  OrderSend(symEA,OP_BUY,lotEA,askEA,3,0,0,"KVAZ",Magic,0,Blue);
  OrderSend(symAU,OP_BUY,lotAU,askAU,3,0,0,"KVAZ",Magic,0,Blue); 
 }
 if(Operation==1)
 {
  OrderSend(symEA,OP_SELL,lotEA,bidEA,3,0,0,"KVAZ",Magic,0,Red);
  OrderSend(symAU,OP_SELL,lotAU,bidAU,3,0,0,"KVAZ",Magic,0,Red);
 }
 
   return(0);
  }
 
alexey1979621:
No, Artemida, non funziona per la mia situazione.


Nel ciclo, ricalcola le posizioni a seconda del simbolo e del mago.

E cos'è questo: OrderClose(OrderTicket(),OrderLots(),OrderClosePrice(),5,0);


P.S.: Artemida non Artemida a

Artmedia

 
evillive:


Nel ciclo, ricalcola le posizioni a seconda del simbolo e del mago.

E cos'è questo: OrderClose(OrderTicket(),OrderLots(),OrderClosePrice(),5,0);


P.S.: Artemida non è Artemida a

Artmedia


Andiamo, sono abituato al fatto che tutti mi chiamino con dei nomi... qualunque cosa ...

In realtà, il prezzo di chiusura in questa funzione funzionava bene. Il compilatore ci metteva il prezzo necessario da solo. Qualcuno qui ha avuto di recente questa causa di errore.

 
artmedia70:

Andiamo, sono abituato al fatto che tutti mi chiamino con dei nomi... qualunque cosa ...

È ora di cambiare il tuo soprannome?
 
alexey1979621:
No, Artemis, non funziona così nella mia situazione.


Sì, beh... Nella tua situazione, quando è così storto, le proposte normali non funzionano davvero...
 
Zhunko:
È ora di cambiare il tuo soprannome?

Questo soprannome ha 300 anni... Mi ci sono affezionato.