[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 700

 
cyclik33:


Eu lhe disse porque o código não funciona corretamente - você o colocou no lugar errado... :) Acho que se você desenroscar as rodas e colocá-las no porta-malas, não irá longe, mesmo que as rodas estejam lá e as portas fechem... :)
 
T-G:

A questão pode ser trivial, o Expert Advisor está negociando na M1, o sinal para abrir uma ordem chegou, vamos assumir que a parada é curta e a ordem fechada na sl. mas a condição para abrir a ordem ainda existe.

Qual é a melhor maneira de garantir que o pedido não seja aberto novamente no mesmo minuto?

Verifique a abertura de uma nova vela. Se for um novo, você abre, se for um antigo, você não...
 
ToLik_SRGV:

A contagem do número na OrderSelect() começa em zero. E você tem 1, o que significa que você está procurando uma segunda encomenda, embora você só tenha uma no mercado, e é por isso que não funciona.

Obrigado, eu esqueci.
 
ToLik_SRGV:

Boris, uma pequena correção no código, esqueci de acrescentar o reset da posição da matriz, ao retornar ao lote original:


Não tenho certeza se o tenho no lugar certo. Depois de perder um pode abrir o lote inicial, se este também estiver perdendo, pode abrir novamente o lote inicial.

E às vezes, após a primeira perda, é preciso 0,4.

Eu devo ter colocado algo no lugar errado?

 
cyclik33:


Eu tenho uma maneira muito estranha de trabalhar com este código. Depois de perder um pode abrir o primeiro lote e se este estiver perdendo novamente, pode abrir o primeiro lote.
E às vezes, após a primeira perda, leva 0,4.
Eu devo ter colocado algo no lugar errado?

Boris, uma pequena correção no código, esqueci de adicionar um reset da posição da matriz, ao retornar ao lote original:

//+------------------------------------------------------------------+
double getMartinLot(double lot, double arrayLot[]){//ФУНКЦИЯ УПРАВЛЕНИЯ ОБъЕМОМ ТОРГОВ ПО СИСТЕМЕ МАРТИНГЕЙЛА
   static double balance_before, balance_after;    //ДЛЯ ХРАНЕНИЯ СОСТОЯНИЯ БАЛАНСА ДО И ПОСЛЕ СДЕЛОК
   static double save_Lot;   
   static int loop;
   if(loop == ArraySize(arrayLot))loop = 0;   
   balance_after = AccountBalance();               //СОХРАНЕНИЕ ТЕКУЩЕГО СОСТОЯНИЯ БАЛАНСА   
   if(balance_after >= balance_before){            //ПРОВЕРКА ИЗМЕНЕНИЯ БАЛАНСА
      save_Lot = lot;                              //ЕСЛИ ОН НЕ ИЗМЕНИЛСЯ ИЛИ СТАЛ БОЛЬШЕ, ТО СБРАСЫВАЕМ ЛОТ ДО БАЗОВОГО
      loop = 0;
   }else{
      save_Lot = arrayLot[loop];                   //ЕСЛИ СТАЛ МЕНЬШЕ ТО УВЕЛИЧИВАЕМ ЛОТ
      loop++;
   }
   balance_before = balance_after;                 //СОХРАНЯЕМ СОСТОЯНИЕ БАЛАНСА ПОСЛЕ РАБОТЫ
   return(save_Lot);
}
//+------------------------------------------------------------------+
 
artmedia70:
Já lhe disse porque não funciona corretamente - você o colocou no lugar errado... :) Acho que se você desatarraxar as rodas e colocá-las no porta-malas, não irá longe, embora pareça que as rodas estão lá e as portas fecham... :)


Estou absolutamente de acordo com você. Mas não estou criticando seu código, apenas disse que tinha um problema com ele), a propósito, tenho um problema com ele novamente, se não se importa - diga-me o que está errado, eu realmente gostaria de entender o que estou fazendo de errado.

cor exteriorOpenBuy = Azul;
cor exteriorCloseBuy = Aqua;
cor exteriorOpenSell = Vermelho;
cor exteriorCloseSell = Aqua;


void deinit() {
Comentário(");
}

double Lots_New = Lot;


//+
+
//| | //+ +

int start(){
if (lFlagUseHourTrade){
if (!(Hour()>=nFromHourTrade && Hour()<=nToHourTrade)) {
Comment("Ainda não chegou a hora do comércio");
return(0);

Eu colei aqui, como você disse, antes da função Start, mas na compilação diz 'Lot' - inicialização esperada D:\MetaTrader\experts\Prostoj_2.mq4 (39, 20)

Por favor, diga-me o que pode ser.

 
artmedia70:
Verifique a abertura de uma nova vela. Se novo, você abre, se velho, você não...
qual é a melhor maneira de fazer isso?
 
cyclik33:


Estou absolutamente de acordo com você. Mas não estou criticando seu código, estou apenas dizendo que tenho alguns problemas com ele. A propósito, tenho outro problema com ele, se você não se importa - diga-me o que está errado, eu realmente gostaria de saber o que estou fazendo de errado.

cor exteriorOpenBuy = Azul;
cor exteriorCloseBuy = Aqua;
cor exteriorOpenSell = Vermelho;
cor exteriorFecharSell = Aqua;


void deinit() {
Comentário(");
}

double Lots_New = Lote;


//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+

int start(){
se (lFlagUseHourTrade){
se (!(Hora()>=nFromHourTrade && Hour()<=nToHourTrade)) {
Comentário ("Ainda não chegou a hora do comércio!");
retorno(0);

Eu o inseri aqui, como você disse, antes da função Iniciar, mas ao compilá-lo diz 'Lote' - inicialização esperada D:\MetaTrader\Prostoj_2.mq4 (39, 20)

Por favor, diga-me o que pode ser.

Onde o lote é inicializado em seu código?

extern color colorOpenBuy = Blue;
extern color colorCloseBuy = Aqua;
extern color colorOpenSell = Red;
extern color colorCloseSell = Aqua;
extern double Lot = 0.1;
double Lots_New;

void deinit() {
Comment("");
}

//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+

int start(){
if (lFlagUseHourTrade){
if (!(Hour()>=nFromHourTrade && Hour()<=nToHourTrade)) {
Comment("Time for trade has not come else!");
return(0);

Em seguida, somente depois de verificar se há alce, ou alterar Lotes_Novos como escrito antes, ou atribuir-lhe valor = Lote;

 

Sim... Estou tendo dificuldades com as matrizes... Tentando preencher uma matriz com dados indutores, a pequena função é um impasse boo-o-o-o-o-little... Você pode me dizer o que estou fazendo de errado?

double      TempIND[50]; 
void   SaveDataIND(double TempIND[], int nBars)
{
   ArrayResize(TempIND,nBars);
   for (int j=0; j<=nBars-1; j++)
      {
         TempIND[j]=iAD(NULL,PERIOD_M5,j);       // ЗДЕСЬ ОШИБКА array item cannot be assigned
         Print("TempIND[",j,"] = ",TempIND[j]);
      }

}

Eu o chamo assim:

SaveDataIND(TempIND, 20);
Onde está o problema?
 
artmedia70:

Sim... Estou tendo dificuldades com as matrizes... Tentando preencher uma matriz com dados indutores, a pequena função é um impasse boo-o-o-o-o-little... Você pode me dizer o que estou fazendo de errado?

Eu o chamo assim:

Onde diabos está o problema?



seu cão em parâmetros de passagem para funcionar, se você passar como SaveDataIND(duplo TempIND[])

double TempIND[ ] é de fato uma nova matriz para a função, mas sem o direito de alterar parâmetros, tente SaveDataIND(double & TempIND[])

Razão: