[Qualsiasi domanda da principiante, per non ingombrare il forum. Professionisti, non passate. Non posso andare da nessuna parte senza di te. - pagina 594

 

Ho preso la teoria delle probabilità e statisticamente se l'ordine di apertura sarà entro 50 pip dal prezzo, allora all'ordine di apertura con 10 pip di profitto è più facile da raggiungere - se ci sarà anche 10 pip di stop loss (anche lo spread non è un problema) il movimento di tendenza è una grande cosa ...

Aggiungere uno stop loss, indipendentemente dallo StepStop

//+------------------------------------------------------------------+
//| Volfram.mq4 |
//| Vova-x@list.ru |
//| |
//+------------------------------------------------------------------+
#property copyright "Vova-x@list.ru"
#proprietà link ""
//-----------------------------------------
extern TakeProfit=10;
extern int StepStop=45;
extern double Lots=0.01;
extern bool MoneyManagement=true;
extern inttern MarginPercent=10;
//-------------------------------------------
int level_sell_stop;
int level_buy_stop;

//----------------------------------------------------------
void init()
{
// int minstop=MarketInfo(Symbol(),MODE_STOPLEVEL);
//Stampa("levelbuy_stop: "+minstop;)
}
//-----------------------------------------------------------
void start()
{
if (!IsTradeAllowed()) return;
level_buy_stop=0;
level_sell_stop=0;
StepingStop();
StepingPendings();
se (TotalBuy ()==0 && TotalBuyStop ()==0) SetBuyStop ();
se (TotalSell()==0 && TotalSellStop()==0) SetSellStop();
Comment("Level Buy Stop=",level_buy_stop*Point,
"\n", "Level Sell Stop=",level_sell_stop*Point);
}
//---------------------------------------------------------------------------------------------
void StepingStop()
{
se (StepStop<1) ritorno;
int ask, bid, open, stop, x;
doppia perdita;
per (int i=0; i<OrdersTotal(); i++)
{
if (!OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) break;
se (OrderSymbol()!=Symbol())
se (OrderType()==OP_BUY)
{
bid=MathRound(Bid/Point);
open=MathRound(OrderOpenPrice()/Point);
stop=MathRound(OrderStopLoss()/Point);
x=(bid-open)/StepStop; x--; x*=StepStop;
level_sell_stop=open+x;
se (stop>=open+x)
perdita=(open+x)*Punto;
OrderModify(OrderTicket(),OrderOpenPrice(),loss,OrderTakeProfit(),0,CLR_NONE);
}
se (OrderType()==OP_SELL)
{
ask=MathRound(Ask/Point);
open=MathRound(OrderOpenPrice()/Point);
stop=MathRound(OrderStopLoss()/Point);
x=(open-ask)/StepStop; x--; x*=StepStop;
level_buy_stop=open-x;
se (stop>0 && stop<=open-x)
perdita=(open-x)*Punto;
OrderModify(OrderTicket(),OrderOpenPrice(),loss,OrderTakeProfit(),0,CLR_NONE);
}
}
}
//----------------------------------------------------------------------------
void PassaggioPendings()
{
int ask, bid, open;
doppio prezzo, perdita, profitto;
per (int i=0; i<OrdersTotal(); i++)
{
if (!OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) break;
se (OrderSymbol()!=Symbol())
se (OrderType()==OP_BUYSTOP)
{
se (level_buy_stop==0)
open=MathRound(OrderOpenPrice()/Point);
se (open<=livello_buy_stop)
price=level_buy_stop*Point;
perdita=prezzo-StepStop*Punto;
profitto=0; se (TakeProfit>0) profitto=prezzo+TakeProfit*Point;
OrderModify(OrderTicket(),price,loss,profit,0,CLR_NONE);
}
se (OrderType()==OP_SELLSTOP)
{
se (level_sell_stop==0)
open=MathRound(OrderOpenPrice()/Point);
se (open>=level_sell_stop)
price=level_sell_stop*Point;
perdita=prezzo+StepStop*Punto;
profitto=0; se (TakeProfit>0) profitto=prezzo-TakeProfit*Point;
OrderModify(OrderTicket(),price,loss,profit,0,CLR_NONE);
}
}
}
//-------------------------------------------------------------------
void SetBuyStop()
{
double lots=LotsCounting();
double price=Bid+StepStop*Point;
doppia perdita=prezzo-StepStop*Punto;
double profit=0; if (TakeProfit>0) profit=price+TakeProfit*Point;
int ticket=OrderSend(Symbol(),OP_BUYSTOP,lots,price,0,loss,profit,"",0,0,CLR_NONE);
if (ticket<1) Print("Set a pending order failed with error #",GetLastError()," ",(GetLastError());
}

void SetSellStop()
{
double lots=LotsCounting();
double price=Ask-StepStop*Point;
doppia perdita=prezzo+StepStop*Punto;
double profit=0; if (TakeProfit>0) profit=price-TakeProfit*Point;
int ticket=OrderSend(Symbol(),OP_SELLSTOP,lots,price,0,loss,profit,"",0,0,0,CLR_NONE);
if (ticket<1) Print("Set a pending order failed with error #",GetLastError()," ",(GetLastError());
}


int TotalBuy()
{
int count=0;
per (int i=0; i<OrdersTotal(); i++)
{
if (!OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) break;
se (OrderSymbol()!=Symbol()) continua;
se (OrderType()==OP_BUY) count++;
}
ritorno (count);
}

int TotalBuyStop()
{
int count=0;
per (int i=0; i<OrdersTotal(); i++)
{
if (!OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) break;
se (OrderSymbol()!=Symbol()) continua;
if (OrderType()==OP_BUYSTOP) count++;
}
ritorno (count);
}

int TotalSell()
{
int count=0;
per (int i=0; i<OrdersTotal(); i++)
{
if (!OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) break;
se (OrderSymbol()!=Symbol()) continua;
se (OrderType()==OP_SELL) count++;
}
ritorno (count);
}

int TotalSellStop()
{
int count=0;
per (int i=0; i<OrdersTotal(); i++)
{
if (!OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) break;
se (OrderSymbol()!=Symbol()) continua;
se (OrderType()==OP_SELLSTOP) count++;
}
ritorno (count);
}

doppio Conteggio dei lotti()
{
doppi lotti=Lotti;
se (MoneyManagement)
{
double lotsize=MarketInfo(Symbol(),MODE_LOTSIZE);
double freemargin=AccountFreeMargin();
lots=0; if (lotsize>0) lots=NormalizeDouble((MarginPercent*freemargin/lotsize),1);
}
if (lots>10) lots=NormalizeDouble(lots,0);
se (lotti<0,01) lotti=0,01;
ritorno (lotti);
}


// Fine

 
drknn:

La ragione per cui non hanno risposto è probabilmente perché scrivere un tale indicatore è semplice e molto probabilmente inutile.
Grazie, ma che dire? O ditemi, forse nelle impostazioni del terminale, c'è la possibilità di mostrare i segni delle ore più chiaramente lungo tutta la lunghezza della scala temporale?
 

Gente, aiuto! Non riesco a calcolare il volume massimo di un trade da aprire

// Расчет максимального объема
   for (double m = 0.1; AccountFreeMarginCheck(Symbol(),OP_SELL,m)>30; m = m + 0.1)
      {
       Max_lots   = m;
       double Ost = AccountFreeMarginCheck(Symbol(),OP_SELL,m);
      }

Max_lots è sempre zero!


E la seconda domanda, come viene calcolato il LIVELLO?


 
root:
Grazie, ma ancora? O ditemi, forse nelle impostazioni del terminale, c'è un'opzione per mostrare gli indicatori delle ore più chiaramente per tutta la lunghezza della scala temporale?
Ho capito, la mancanza di questo indicatore è l'ultima cosa che ti impedisce di fare soldi nel forex. Sicuramente no, ma Urain ne ha uno simile per 8 linee. Se non ci riesci, chiedi all'autore, è sul forum.
File:
time_line.mq4  2 kb
 

in termini semplici, il volume può essere calcolato come segue

/* вычитаем средства обозначенные на стопаут c учетом процента риска */
   curBalance = AccountFreeMargin() * (1 - AccountStopoutLevel() / 100.) * percent; // percent - от 0 до 100
/* множитель (1 или 10) зависит от четырех-пятизначности  */
   koeff = iif(DIGITS == 3 || DIGITS == 5, 10, 1);
/* расчет рабочего лота, нормализация */
   lot = NL(curBalance / (koeff * lossPoint * TICKVALUE + MARGINREQUIRED)); //lossPoint - количество пунктов потерь
   if (lot < MINLOT)    lot = 0;
   if (lot > MAXLOT)    lot = MAXLOT;

/* DIGITS,MINLOT,MAXLOT,TICKVALUE,MARGINREQUIRED получаем из Marketinfo() */


e livello = AccountEquity() / AccountFreeMargin() * 100;

 
keekkenen:



e livello = AccountEquity() / AccountFreeMargin() * 100;

NON è corretto. Questa formula non funziona Livello
 
Noterday:
Non è corretto. Questa formula non risolve il livello

Sì, sbagliato, livello = AccountEquity() / AccountMargin() * 100;

 
keekkenen:

Sì, sbagliato, livello = AccountEquity() / AccountMargin() * 100;

Grazie :)
 
Salve. Ragazzi, per favore aiutatemi con una cosa. Non ne ho mai sentito parlare - ma se qualcuno ce l'avesse? L'idea è di trasferire tutti gli oggetti selezionati da un grafico all'altro. Cioè, supponiamo che io abbia bisogno di trasferire la marcatura dell'onda di tutti i tempi di un simbolo in una finestra. È difficile ripetere il mark-up cambiando timeframes, a causa della pesantezza del calcolo (il calcolo di 30-50 tendenze su M1 fa risaltare il terminale - ed è solo circa 16 - 24 ore di un grafico). Forse c'è uno script che copia gli oggetti sul grafico (in questo caso le linee di tendenza) con il successivo trasferimento dell'intero array di linee di tendenza in un'altra finestra? O forse c'è la possibilità di combinare diversi modelli in una finestra?
 

Scusa per il flub, ma oggi è il giorno giusto.

=====

E oscillare ad un'altezza senza senso...

Un paio di frasi che sono arrivate da qui...

===========

Andrei Voznesensky.