Помогите переменной присвоить текущую цену

 
и чтобы она не менялась с каждым тиком, а поменялась при определенном условии.....затупил че то:(
 

double price;

if(условие) price=Bid;

else if (условие) price=Ask;

 

а можно я поподробнее тогда напишу че хочу:

я хочу чтобы в какой нибудь момент времени переменная присвоила себе цену и хранила её не меняя при каждом тике, и когда выполняется условие зависящее от этой цены...блин как описать то:)

мне надо чтобы каждая последующая цена сравнивалась с той которая в переменную записана и при отличии допустим на 20 пунктов вызывала ОрдерСенд....вот....подскажите пожалуйста... 

 
izmailoff:

а можно я поподробнее тогда напишу че хочу:

я хочу чтобы в какой нибудь момент времени переменная присвоила себе цену и хранила её не меняя при каждом тике, и когда выполняется условие зависящее от этой цены...блин как описать то:)

мне надо чтобы каждая последующая цена сравнивалась с той которая в переменную записана и при отличии допустим на 20 пунктов вызывала ОрдерСенд....вот....подскажите пожалуйста...

Храни значение во внешней переменной

extern double i;
 
izmailoff:

а можно я поподробнее тогда напишу че хочу:


а можно я отвечу на вопрос чего Вы хотите? (ну типа быть богатым, т.к. советник сам заработал пару миллионов ....)  :)

по сабжу, наверно так:

#property copyright "IgorM"
#property link      "http://www.metaquotes.net"

extern double trailing_price = 200;

double price = 0;

int init()
  {

   return(0);
  }

double virtualTrail(double pr,int com=0)
{
    if (com==1)
         if (Bid - pr > trailing_price*Point) return (Bid);
    if (com==-1)
         if (pr -Bid > trailing_price*Point) return (Bid);
return(pr);
}


int deinit()
  {

   return(0);
  }
int start()
  {
   price = virtualTrail(price,+1); // тралим на уведичение цены
   //price = virtualTrail(price,-1); // тралим на уменьшение цены
   //if (virtualTrail(price,+1))>price) {Sellfunc();price = virtualTrail(price,+1)} //выставим ордер SELL и запомним новую цену
   //if (virtualTrail(price,-1))<price) {Buyfunc(); price = virtualTrail(price,-1)}//выставим ордер BUY и запомним новую цену
   
   return(0);
  }
//+------------------------------------------------------------------+

это для пятизнака, если 4-х знак, то  double trailing_price = 20;

ЗЫ: ктонить проверьте, чет я спросонья еще не включился на полную :) 

 
так, пошел сидеть думать, спасибо что неотказали :)
 
rensbit:

Храни значение во внешней переменной

Разработчики терминала не рекомендуют программно изменять (переприсваивать) значения внешних переменных.

Лучше наверное ввести глобальную переменную советника (не терминала) или статическую переменную в функции.

 
if(price==0 || Bid-price>=20*Point) price=Bid;// цена выросла на 20 пунктов.
if(price==0 || price-Bid>=20*Point) price=Bid;// цена упала на 20 пунктов.
Причина обращения: