[AVISO FECHADO!] Qualquer pergunta de novato, para não desorganizar o fórum. Profissionais, não passem por aqui. Não posso ir a lugar algum sem você. - página 1110

 
ALEX_SPB_RU:

Eu ainda não entendi!

Mesmo se eu especificar explicitamente que a busca deve começar a partir da posição zero, o objeto chamado ya ya_Prefix_78 será excluído , pois a função retornará o número 4

Especificamente, para apagar por prefixo, você deve especificar ou ==0 ou colocar !

Sem ofensa, estou apenas aprendendo, por isso quero desembalar tudo para mim.

Mais uma vez obrigado por sua ajuda!

Boa sorte!

Talvez eu não tenha deixado isso suficientemente claro:

se(StringFind(nome, prefixo,0) == 0) é para procurar exclusivamente desde o início da corda.

Não gosto de parâmetros padrão, a menos que sejam funções manuscritas - o controle é totalmente....

Boa sorte.

 
abolk:

Se você pode chamar isso de aborrecimento, então um aborrecimento. eu gostaria de ajudar alguém em particular que precisa de ajuda. mas sei por experiência, se alguém é preguiçoso demais para entender sua própria tarefa, então ajudar é um aborrecimento total...
Por que isso? É possível argumentar que é mais rápido e fácil para uma pessoa competente escrever código do que para alguém que acabou de abrir um livro de texto, que comete alguns erros e depois só consegue o resultado certo? Se você quer dizer que eu não quero pensar em como escrever, então logicamente eu escreveria imediatamente o problema e pediria para escrever um, mas não, eu quero entender a mim mesmo, mas não toda a linguagem, mas especificamente minha tarefa
 
sergeev:

Escrevi nomes de funções específicas para vocês.

Eu até mostrei o algoritmo para suas ações.

Você é preguiçoso demais para pensar no que você escreveu?

Encontrei apenas OrderModify, não consegui encontrar OrderOpenPrice , embora me lembre de tê-lo visto antes. Quanto a pensar, pensei que tal tarefa pertence a funções booleanas (penso se, então) em que colocar o que você escreveu. estou certo?
 
Danil93:
Encontrei apenas OrderModify, não consegui encontrar OrderOpenPrice , embora me lembre de tê-lo visto antes. Quanto a pensar, eu pensei que tal problema pertence a funções booleanas (acho que se, então) nas quais você precisa escrever o que escreveu. estou certo?

Sim.

ok. se eu lhe der uma função que você quer, você mesmo pode ao menos colá-la no código?

 
sergeev:

Sim.

ok. se eu lhe der a função que você quer, você mesmo pode ao menos colá-la no código?

eu posso
 

como encontrar o alto entre uma determinada data e outra programática.

Há uma função que procura uma alta por barra; entendo que procura uma alta de 0 barra a 4 barra; posso usar a data e a hora da barra em vez da barra?

Por exemplo, eu posso determinar a data 2011.01.05 20:00 e encontrar a barra (10 ou 100 barras) e depois colá-la na função de procurar a alta?

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

como encontrar o alto entre uma determinada data e outra programática.

Há uma função que procura uma alta por barra; entendo que procura uma alta de 0 barra a 4 barra; posso usar a data e a hora da barra em vez da barra?

Por exemplo, eu posso determinar a data 2011.01.05 20:00 e encontrar a barra (10 ou 100 barras) e depois colá-la na função de procurar a alta?


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:

Obrigado).
 
Danil93:
pode
//------------------------------------------------------------------ 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);
                }
        }
}
 


se (OrderSymbol()!=Symbol()) continuar; // se a ordem não for nossa moeda, então pule

Ainda não entendo nada, acabei de entrar no fórum, procurei por 15 segundos, mas há um erro, devo escrever ==, à primeira vista, desculpe se algo está errado.

Boas Festas!!! Todos!!!!

Razão: