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

 
ALEX_SPB_RU:

Ancora non capisco!

Anche se specifico esplicitamente che la ricerca deve iniziare dalla posizione zero, l'oggetto chiamato ya_Prefix_78 sarà cancellato , perché la funzione restituirà il numero 4

In particolare, per cancellare per prefisso, dovete specificare o ==0 o mettere !

Senza offesa, sto imparando, quindi voglio spacchettare tutto da solo.

Grazie ancora per il vostro aiuto!

Buona fortuna!

Forse non sono stato abbastanza chiaro:

if(StringFind(name, prefix,0) == 0) è per cercare esclusivamente dall'inizio della stringa.

Non mi piacciono i parametri predefiniti, a meno che non si tratti di funzioni scritte a mano - lì il controllo è pieno....

Buona fortuna.

 
abolk:

Mi piacerebbe aiutare qualcuno in particolare che ha bisogno di aiuto. ma so per esperienza che se qualcuno è troppo pigro per capire il proprio compito, allora aiutare è una rottura totale...
Perché? È possibile sostenere che è più veloce e più facile per una persona competente scrivere codice che per qualcuno che ha appena aperto un libro di testo, che farà qualche errore e poi otterrà solo il risultato giusto? Se intendi che non voglio pensare a come scrivere, allora logicamente scriverei subito il problema e chiederei di scriverne uno, ma no, voglio capire me stesso, ma non tutto il linguaggio, ma esattamente il mio compito
 
sergeev:

Vi ho scritto nomi di funzioni specifiche.

Ti ho anche mostrato l'algoritmo delle tue azioni.

Sei anche troppo pigro per pensare a quello che hai scritto?

Ho trovato solo OrderModify, non ho trovato OrderOpenPrice , anche se ricordo di averlo visto prima. Per quanto riguarda il pensare, ho pensato che un tale compito appartiene alle funzioni booleane (penso if, then) in cui mettere quello che avete scritto. ho ragione?
 
Danil93:
Ho trovato solo OrderModify, non ho trovato OrderOpenPrice , anche se ricordo di averlo visto prima. Per quanto riguarda il pensiero, pensavo che un tale problema appartenesse alle funzioni booleane (penso if, then) in cui è necessario scrivere quello che hai scritto. ho ragione?

Sì.

Ok. Se ti do una funzione che vuoi, puoi almeno incollarla nel codice da solo?

 
sergeev:

Sì...

Ok. Se ti do la funzione che vuoi, puoi almeno inserirla nel codice da solo?

Posso
 

come trovare programmaticamente il massimo tra una certa data e un'altra data.

C'è una funzione che cerca un alto per barra; capisco che cerca un alto da 0 a 4 barre; posso usare la data e l'ora della barra invece della barra?

Per esempio, posso determinare la data 2011.01.05 20:00 e trovare la barra (10 o 100 barre) e poi incollarla nella funzione di ricerca del massimo?

iHigh(Symbol(),0,iHighest(NULL,0,MODE_HIGH,4,0)
 
Eliza:

come trovare programmaticamente il massimo tra una certa data e un'altra data.

C'è una funzione che cerca un alto per barra; capisco che cerca un alto da 0 a 4 barre; posso usare la data e l'ora della barra invece della barra?

Per esempio, posso determinare la data 2011.01.05 20:00 e trovare la barra (10 o 100 barre) e poi incollarla nella funzione di ricerca del massimo?


int iBarShift( string symbol, int timeframe, datetime time, bool exact=false) 
Поиск бара по времени. Функция возвращает смещение бара, которому принадлежит указанное время. 
Если для указанного времени бар отсутствует ("дыра" в истории), то функция возвращает, в зависимости 
от параметра exact, -1 или смещение ближайшего бара.

Параметры:
symbol   -   Символьное имя инструмента. NULL означает текущий символ. 
timeframe   -   Период. Может быть одним из периодов графика. 0 означает период текущего графика. 
time   -   Значение времени для поиска. 
exact   -   Возвращаемое значение если бар не найден. FALSE - iBarShift возвращает ближайший. 
            TRUE - iBarShift возвращает -1. 

Пример:
  datetime some_time=D'2004.03.21 12:00';
  int      shift=iBarShift("EUROUSD",PERIOD_M1,some_time);
  Print("shift of bar with open time ",TimeToStr(some_time)," is ",shift);

 
 
VladislavVG:

Grazie).
 
Danil93:
può
//------------------------------------------------------------------ TralTP
void TralTP()
{
        int TS=20; // расстояние убытка, на котором переносим тейкпрофит на цену открытия
        
        double FreezLvl=MarketInfo(Symbol(), MODE_FREEZELEVEL)*Point; // расстояние заморозки ордера
        double StopLvl=MarketInfo(Symbol(), MODE_STOPLEVEL)*Point; // расстояние стопуровня ордера
        
        int n=OrdersTotal(); // число текущих открытых ордеров
        for (int i=0; i<n; i++) // проходим по всем ордерам и двигаем стоп
        {
                if (!OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) continue; // берем ордер
                if (OrderSymbol()!=Symbol()) continue; // если ордер не нашей валюты, то пропускаем
                
                // берем его параметры
                int dir=OrderType(); double cop=NormalizeDouble(OrderOpenPrice(), Digits);
                double csl=NormalizeDouble(OrderStopLoss(), Digits); 
                double ctp=NormalizeDouble(OrderTakeProfit(), Digits);
                
                double apr; if (dir==OP_BUY) apr=Bid; else apr=Ask;
                // проверили уровень заморозки
                if (MathAbs(ctp-apr)<=FreezLvl || MathAbs(csl-apr)<=FreezLvl) continue; // если уровень заморозки
                
                double tp=cop; // ставим ТП на цену открытия
                
                // и проверяем условия выполнения отхода в убыток и правильность установки
                if ((dir==OP_BUY && cop-apr>=TS*Point && (tp<ctp || ctp==0) && tp>apr+StopLvl)
                 || (dir==OP_SELL && apr-cop>=TS*Point && (tp>ctp || ctp==0) && tp<apr-StopLvl))
                {
                        if (!OrderModify(OrderTicket(), cop, csl, tp, 0)) 
                                Print(GetLastError(), " -TralPos #"+OrderTicket()+" tp="+tp);
                }
        }
}
 


if (OrderSymbol()!=Symbol()) continue; // se l'ordine non è la nostra valuta, allora saltare

Non capisco ancora nulla, sono appena entrato nel forum, guardo per 15 secondi, ma c'è un errore, dovrei scrivere ==, a prima vista, scusate se qualcosa è sbagliato.

Buone feste!!!Tutti!!!!

Motivazione: