Qualsiasi domanda da principiante, per non ingombrare il forum. Professionisti, non passate oltre. Da nessuna parte senza di te - 6. - pagina 816
Ti stai perdendo delle opportunità di trading:
- App di trading gratuite
- Oltre 8.000 segnali per il copy trading
- Notizie economiche per esplorare i mercati finanziari
Registrazione
Accedi
Accetti la politica del sito e le condizioni d’uso
Se non hai un account, registrati
Ho appena sperimentato con "l'archivio delle quotazioni". aggiornando ogni grafico separatamente, la storia per quasi tutti i grafici ha iniziato a funzionare correttamente, tranne che per alcune coppie esotiche, le ho cancellate e aggiornate un paio di volte - nessun nuovo dato per il grafico. in generale, possiamo dire che il problema è stato risolto
grazie per l'efficienza))))
Cari programmatori....Ho un problema... Hocreato un EA.... che apre le operazioni normalmente (nel tester) .... ma chiude solo le operazioni di acquisto.... chiude solo le operazioni di vendita dopo aver completato il test... ecco un pezzo di codice.... potete aiutarmi...
//---------------------------------------------------------------------------------------------------------
void CloseSell()
{
for (int trade = OrdersTotal() - 1; trade >= 0; trade--)
{
if (OrderSelect(trade, SELECT_BY_POS, MODE_TRADES) == true)
{
if (OrderSymbol() == Symbol())
{
if (OrderMagicNumber() == Magic && OrderType() == OP_SELL)
OrderClose(OrderTicket(), OrderLots(), Ask, Slippage, Green);
}
}
}
}
//+------------------------------------------------------------------+
void CloseBuy()
{
for (int trade = OrdersTotal() - 1; trade >= 0; trade--)
{
if (OrderSelect(trade, SELECT_BY_POS, MODE_TRADES) == true)
{
if (OrderSymbol() == Symbol())
{
if (OrderMagicNumber() == Magic && OrderType() == OP_BUY)
OrderClose(OrderTicket(), OrderLots(), Bid, Slippage, Green);
}
}
}
}
//+------------------------------------------------------------------+
void OpenSellOrder()
{
mlots = GetLots();
if (AutoSL) sl = CalcSL(OP_SELL);
else sl = ND(Bid - StopLoss*Point);
tp = ND(Bid - TakeProfit*Point);
ticket = OrderSendReliable(Symbol(), OP_SELL, mlots, Bid, Slippage, 0, 0, comment, Magic, 0, Red);
if(ticket > 0)
OrderModifyReliable(OrderTicket(), OrderOpenPrice(), sl, tp, 0);
}
//+------------------------------------------------------------------+
int OpenBuyOrder()
{
mlots = GetLots();
if (AutoSL) sl = CalcSL(OP_BUY);
else sl = ND(Bid - StopLoss*Point);
tp = ND(Ask + TakeProfit*Point);
ticket = OrderSendReliable(Symbol(), OP_BUY, mlots, Ask, Slippage, 0, 0, comment, Magic, 0, Blue);
if(ticket > 0)
OrderModifyReliable(OrderTicket(), OrderOpenPrice(), sl, tp, 0);
}
//+------------------------------------------------------------------+
void ModifyLoss()
{
for (int trade = OrdersTotal() - 1; trade >= 0; trade--)
{
if (OrderSelect(trade, SELECT_BY_POS, MODE_TRADES) == true)
{
if (OrderSymbol() != Symbol() || OrderMagicNumber() != Magic) continue;
if (OrderType() == OP_BUY)
{
sl = ND(OrderOpenPrice() + LossPoints*Point);
if (OrderStopLoss() < sl && (Ask - OrderOpenPrice())/Point >= LossLimit)
{
if (sl != ND(OrderStopLoss()))
OrderModify(OrderTicket(), OrderOpenPrice(), sl, OrderTakeProfit(), 0);
}
}
else
if (OrderType() == OP_SELL)
{
sl = ND(OrderOpenPrice() - LossPoints*Point);
if (OrderStopLoss() > sl && (OrderOpenPrice()-Bid)/Point >= LossLimit)
{
if (sl != ND(OrderStopLoss()))
OrderModify(OrderTicket(), OrderOpenPrice(), sl, OrderTakeProfit(), 0);
}
}
}
}
}
//+------------------------------------------------------------------+
double CalcSL(int otype)
{
double sloss = 10000000;
if (otype == OP_BUY)
{
double min;
for (int i=1; i<=SLBars; i++)
{
min = iLow(NULL, 0, i);
if (min < sloss)
sloss = min;
}
sloss = ND(sloss - SLPips*Point);
if ((Ask-sloss)/Point < MinSL)
sloss = ND(Ask - MinSL*Point);
if ((Ask - sloss)/Point > MaxSL)
sloss = ND(Ask - MaxSL*Point);
else
sloss = ND(sloss - SLPips*Point);
return(sloss);
}
else
if (otype == OP_SELL)
{
double max;
sloss = 0;
for (i=1; i<=SLBars; i++)
{
max = iHigh(NULL, 0, i);
if (max > sloss)
sloss = max;
}
if ((sloss - Bid)/Point < MinSL)
sloss = ND(Bid + MinSL*Point);
if ((sloss - Bid)/Point > MaxSL)
sloss = ND(Bid + MaxSL*Point);
else
sloss = ND(sloss + SLPips*Point);
return(sloss);
}
return(0);
}
//+------------------------------------------------------------------+
double GetLots()
{
if (!UseMM) return(FixLot);
double clots;
clots = AccountBalance() / 10000.0 * LotsFor10000;
clots = MathMax(clots, MarketInfo(Symbol(), MODE_MINLOT));
clots = MathMin(clots, MarketInfo(Symbol(), MODE_MAXLOT));
clots = NormalizeDouble(clots, 2);
return (clots);
}
//+------------------------------------------------------------------+
int CountBuy()
{
int count = 0;
for (int trade = OrdersTotal() - 1; trade >= 0; trade--)
{
if (OrderSelect(trade, SELECT_BY_POS, MODE_TRADES))
{
if (OrderSymbol() == Symbol() && OrderMagicNumber() == Magic && OrderType() == OP_BUY)
count++;
}
}
return (count);
}
//+------------------------------------------------------------------+
int CountSell()
{
int count = 0;
for (int trade = OrdersTotal() - 1; trade >= 0; trade--)
{
if (OrderSelect(trade, SELECT_BY_POS, MODE_TRADES))
{
if (OrderSymbol() == Symbol() && OrderMagicNumber() == Magic && OrderType() == OP_SELL)
count++;
}
}
return (count);
}
//+------------------------------------------------------------------+
int CountTrades()
{
return(CountBuy() + CountSell());
}
//+------------------------------------------------------------------+
double ND(double value)
{
return (NormalizeDouble(value, Digits));
Ordine preselezionato OrderSelect (Ticket_first_order, SELECT_BY_TICKET);
se(OrderOpenPrice()+10*Point==Ask)
OrderSend(Symbol(),OP_BUY,Lot,Ask,10,Ask-SL*Point,Ask+TP*Point,NULL,Magic,0,Green);
Credo che sia un ramo funzionante... oops, scusate.
Buonanotte a tutti!!! Buon anno!
Ha deciso di salvare i dati del buffer attraverso un file. Nessun problema a creare un file e a scriverci, ma è difficile leggere da esso.
Ecco un programma di prova. Per favore, aiutatemi. Il problema è che o c'è una scrittura extra nel file, o non può essere letto dal file. Voglio solo leggere una lista da un file in, per esempio, array... Se sono troppo pigro per scrivere per favore linkate materiale simile, ma ho trovato solo tutorial... MA MEGLIO UNA VARIANTE PRONTA SUL SITO))):
GRAZIE IN ANTICIPO COMUNQUE!!!))
Ahimè, non è così facile con la REGISTRAZIONE nel file!!!(((
E sembrava ... al contrario.
La lettura è risolta grazie agli esempi del tutorial, ma la REGISTRAZIONE in un file richiede un codice più complesso. In breve, sono già fregato... Non riesco a capire come spostare il record in sincronia con il Read from file.
Ho corretto l'impostazione dei livelli per le barre giornaliere e per la storia (dati iniziali tamponati).
LA DOMANDA È LA STESSA. PER FAVORE DATEMI UN SUGGERIMENTO, SE È TROPPO SCRIVERE, SU COME SCRIVERE I DATI DEL BUFFER IN UN FILE.
CODICE MODIFICATO DEL PROGRAMMA
TROVATO DOVE CERCARE LE RISPOSTE ALLE MIE DOMANDE...SULLE OPERAZIONI SUI FILE)):
SCRIPT PER L'OUTPUT DI INFORMAZIONI DA UN FILE A UN GRAFICO.
STORIA DEI CODICI MT4 GRATUITI CI SONO OPZIONI PER IL TRASFERIMENTO DI DATI IN UN FILE, COSÌ COME L'OPERAZIONE INVERSA.
GRAZIE A TUTTI, CIAO)))):
C'è un grande file con date in questa forma "20141231". Per convertire la stringa in formatodatetime hai bisogno dei punti"YYYY.MM.DD" tra l'anno, il mese e il numero.
Come si può fare?
Ciao a tutti, voglio che l'EA trovi il massimo più alto o il minimo più basso in 100 barre, consigliare dove leggere?
Potete leggere l'aiuto, è tutto lì, con esempi.