Forexman77: Ne hai bisogno, ovviamente! Bene, come applicare questa costruzione per cercare il minimo? Non posso farlo con il mio cervello)
Per trovare il massimo, alla variabile val viene assegnato il valore 0 (ovviamente inferiore a qualsiasi valore dell'indicatore).
Questo significa che per trovare il minimo, dobbiamo aggiungere un valore volutamente più alto. Si può usare la costante EMPTY_VALUE o il valore dell'indicatore direttamente su qualche barra tra cui si cerca il minimo.
Ne hai bisogno, naturalmente! Bene, come si applica questa costruzione per trovare il minimo? Non riesco a capirlo). E voglio imparare come dichiarare un array. Ho provato in questo modo:
Esce -1.
Il ciclo passa attraverso 34 valori e l'array contiene solo 33 celle, corretto.
... Voglio anche imparare come dichiarare un array...
Se solo per allenamento e scopo cognitivo...
Il periodo in cui vengono determinati il minimo e il massimo - dovrebbe essere un parametro esterno per consentire la messa a punto e l'ottimizzazione.
externint p=34;
Quindi, prima di tutto, l'array è dichiarato senza dimensione:
double val[];
La dichiarazione dell'array è fatta in una sezione comune, non in una funzione.
Nella funzione init, la dimensione è impostata sull'array:
Per trovare il massimo, alla variabile val viene assegnato il valore 0 (ovviamente inferiore a qualsiasi valore dell'indicatore).
Questo significa che per trovare il minimo, dobbiamo aggiungere un valore volutamente più alto. Si può usare la costante EMPTY_VALUE o il valore dell'indicatore direttamente su qualche barra tra cui si cerca il minimo.
#property strict#include <Indicators\Trend.mqh>
bool ind;
CiMA MA;
externint pos=1;
externint sl=40;
externint tp=70;
datetime time;
datetime time2;
bool trade=false;
bool trade2=false;
int a,b;
intOnInit()
{
//---
MA.Create(Symbol(),PERIOD_CURRENT,10,6,MODE_EMA,PRICE_CLOSE);//создал машку//---return(INIT_SUCCEEDED);
}
voidOnTick()
{
//---if(IsNewBar()==true)//если новый бар включаемся
{
if(buy(pos)==true)//если цена выше МА продолжаем
{
if(!ExistPositions(Symbol(),-1,-1,0))//если нету открых ордеров продолжаем
{
if(GetTypeLastClosePos(Symbol(),-1)!=OP_BUY)//если тип последней закрытой позиции был не на покупку то тогда только покупаем таким образом я пред остерегаюсь от повторных входов в покупку если цена //все ещо выше МА...но почему то не работает открываются и дальше сделки на покупку если ордер закрылся выше МА....ХОТЯ НЕ ДОЛЖО ТАК КАК Я ОГРАНИЧИЛ ПО ТИПУ ПОЗИЦИИ ПОСЛЕДНЮЮ СДЕЛКУ И ОНИ ДОЛЖНЫ ТОЛЬКО // ЧЕРЕДОВАТСЯ И УЖ НИ КАК НЕ ПОВТОРЯТСЯ ПО НЕСКОЛЬКО РАЗ ПОДРЯД
{
trade=true;
}
if(trade==true)
{
OpenPosition(Symbol(),OP_BUY,0.1,Ask-sl*Point,Ask+tp*Point);
trade=false;
}
}
}
if(sell(pos)==true)
{
if(!ExistPositions(Symbol(),-1,-1,0))
{
if(GetTypeLastClosePos(Symbol(),-1)!=OP_SELL)
{
trade2=true;
}
if(trade2==true)
{
OpenPosition(Symbol(),OP_SELL,0.1,Bid+sl*Point,Bid-tp*Point);
trade=false;
}
}}
}
}
//возвращает истину если закрытие бара с указаной позицией выше МАbool buy(int pos)
{
if(iClose(Symbol(),0,pos)>MA.Main(1))
returntrue;
elsereturnfalse;
}
//+------------------------------------------------------------------+//| возвращает истину если закрытие бара с указаной позицией ниже МА//+------------------------------------------------------------------+bool sell(int pos)
{
if(iClose(Symbol(),0,pos)<MA.Main(1))
returntrue;
elsereturnfalse;
}
TUTTE le FUNZIONI tranne le due condizioni di acquisto e vendita sono prese dal ramo di kim...... per favore ditemi dove ho sbagliato...ho bisogno di una transazione per intersezione
Non ci sono molte informazioni nella domanda però. Ci sono molti estremi sulle barre delle ore nel mese. E a proposito, estremi di cosa esattamente?
Ho pensato che ci sono solo due estremi mensili - min e max... Beh, comunque, all'inizio era un codice lungo, è per questo che ho chiesto aiuto... Ma poi mi è venuto in mente che sono riuscito ad inserirlo in quattro righe.
Ne hai bisogno, ovviamente! Bene, come applicare questa costruzione per cercare il minimo? Non posso farlo con il mio cervello)
Per trovare il massimo, alla variabile val viene assegnato il valore 0 (ovviamente inferiore a qualsiasi valore dell'indicatore).
Questo significa che per trovare il minimo, dobbiamo aggiungere un valore volutamente più alto. Si può usare la costante EMPTY_VALUE o il valore dell'indicatore direttamente su qualche barra tra cui si cerca il minimo.
O come questo:
Ne hai bisogno, naturalmente! Bene, come si applica questa costruzione per trovare il minimo? Non riesco a capirlo).
Esce -1.E voglio imparare come dichiarare un array. Ho provato in questo modo:
Il ciclo passa attraverso 34 valori e l'array contiene solo 33 celle, corretto.
E provate ArrayMinimum(num_array,WHOLE_ARRAY,0);
... Voglio anche imparare come dichiarare un array...
Se solo per allenamento e scopo cognitivo...
Il periodo in cui vengono determinati il minimo e il massimo - dovrebbe essere un parametro esterno per consentire la messa a punto e l'ottimizzazione.
Quindi, prima di tutto, l'array è dichiarato senza dimensione:
double val[];La dichiarazione dell'array è fatta in una sezione comune, non in una funzione.
Nella funzione init, la dimensione è impostata sull'array:
Ora nella funzione di avvio riempiamo l'array:
Infine , ArrayMaximum() e ArrayMinimum() sono applicate all'array.
Per trovare il massimo, alla variabile val viene assegnato il valore 0 (ovviamente inferiore a qualsiasi valore dell'indicatore).
Questo significa che per trovare il minimo, dobbiamo aggiungere un valore volutamente più alto. Si può usare la costante EMPTY_VALUE o il valore dell'indicatore direttamente su qualche barra tra cui si cerca il minimo.
O come questo:
Il ciclo passa attraverso 34 valori, mentre l'array contiene solo 33 celle, correggetelo.
E provate ArrayMinimum(num_array,WHOLE_ARRAY,0);
Cari colleghi programmatori! Sono nei guai, per favore aiutatemi.
Mi sono già scervellato su questo codice.
Ecco l'intera funzione:
Raggiunge Print e questo è ciò che produce:
Mentre il ticket: 225299700 è un ticket d'ordine OP_SELLLIMIT.
E modifica lo stop loss di questo ordine selezionato come previsto. Ma OP_BUY non si vede, anche se sono sicuro che esiste:
Quale potrebbe essere il problema? Perché mi fa questo? Per favore, aiutatemi a capire!
un'altra domanda sulla funzione
come far disegnare un rettangolo in avanti invece che indietro, per esempio cinque barre in avanti ad un prezzo specificato...... e non ridisegnarlo
Mi sono informato. Grazie.
Non ci sono molte informazioni nella domanda però. Ci sono molti estremi sulle barre delle ore nel mese. E a proposito, estremi di cosa esattamente?