Programming Newbie - futures io
futures io futures trading



Programming Newbie


Discussion in EasyLanguage Programming

Updated
      Top Posters
    1. looks_one JGSmith with 9 posts (1 thanks)
    2. looks_two ABCTG with 6 posts (5 thanks)
    3. looks_3 kevinkdog with 2 posts (0 thanks)
    4. looks_4 LogicalTrader with 2 posts (1 thanks)
    1. trending_up 2,894 views
    2. thumb_up 7 thanks given
    3. group 3 followers
    1. forum 19 posts
    2. attach_file 6 attachments




Welcome to futures io: the largest futures trading community on the planet, with well over 125,000 members
  • Genuine reviews from real traders, not fake reviews from stealth vendors
  • Quality education from leading professional traders
  • We are a friendly, helpful, and positive community
  • We do not tolerate rude behavior, trolling, or vendors advertising in posts
  • We are here to help, just let us know what you need
You'll need to register in order to view the content of the threads and start contributing to our community.  It's free and simple.

-- Big Mike, Site Administrator

(If you already have an account, login at the top of the page)

 
Search this Thread
 

Programming Newbie

(login for full post details)
  #1 (permalink)
Lübeck, Germany
 
Experience: Intermediate
Platform: NinjaTrader, MT4
Broker: FXCM, Interactive Brokers, Oanda
Trading: Forex
 
JGSmith's Avatar
 
Posts: 151 since Aug 2013
Thanks: 61 given, 55 received

So I have finally decided to try my hand at EasyLanguage / PowerLanguage.

Sometime I will get around to doing one of the courses on it, but for now I am just doing some self-teaching.

I have run into a strange issue. I am trying to create a PaintBar that will change color if the price is above the PSAR vs below the PSAR.

Here is the code of what I have and maybe somebody could help me out with what I am doing wrong.

Variables:
var0( 0 ) ,
var1( 0 ) ,
var2( 0 ) ,
var3( 0 ) ;



if Close > ParabolicSAR( .02 , .2 , var0 , var1 , var2 , var3 ) then begin
PlotPaintBar( High , Low , Open , Close , "" , White ) ;
end

If Close < ParabolicSAR( .02 , .2 , var0 , var1 , var2 , var3 ) then begin
PlotPaintBar(High , Low , Open , Close "" , White ) ;
end

First of all, this will not compile. It says that it does not expect the second "if" statement. Therefore, my first question is what is wrong with this keeping it from accepting the second If statement.

The second issue is that, if I take out the second If statement, then it has no problems compiling - but, it colors every single bar as white. What have I done wrong so that every bar is white rather than only the bars that are above the PSAR.

If I take out the first If statement and only choose to color the bars that are below the PSAR then none of the bars will color.

If you need it, here is the ParabolicSAR function code:

inputs: AfStep( 0.02), AfLimit( 0.2 ) ;
variables: var0( 0 ), var1( 0 ), var2( 0 ), var3( 0 ), var4( "" ) ;

Value1 = ParabolicSAR( AfStep , AfLimit , var0 , var1 , var2 , var3 ) ;

Plot1( var0, "ParCl" ) ;


if var3 = 1 then
Alert( "Bullish reversal" )
else if var3 = -1 then
Alert( "Bearish reversal" ) ;


Thank you very much for your help.

There are a few items that I have that will come after this.

Started this thread Reply With Quote
The following user says Thank You to JGSmith for this post:

Can you help answer these questions
from other members on futures io?
Where can I find Cost to Trade and Book Depth info?
Emini and Emicro Index
Second Entry Indicator (Looking for testers/feedback)
NinjaTrader
Which kind of Blockvolume is visible? - order processing
Emini and Emicro Index
Neurological explanations for trading Success
Psychology and Money Management
COTbase for quant trading?
Elite Algorithmic NinjaTrader Trading
 
 
(login for full post details)
  #3 (permalink)
 
 
Posts: 2,979 since Jul 2012
Thanks: 1,576 given, 5,906 received



JGSmith View Post
So I have finally decided to try my hand at EasyLanguage / PowerLanguage.

Sometime I will get around to doing one of the courses on it, but for now I am just doing some self-teaching.

I have run into a strange issue. I am trying to create a PaintBar that will change color if the price is above the PSAR vs below the PSAR.

Here is the code of what I have and maybe somebody could help me out with what I am doing wrong.

Variables:
var0( 0 ) ,
var1( 0 ) ,
var2( 0 ) ,
var3( 0 ) ;



if Close > ParabolicSAR( .02 , .2 , var0 , var1 , var2 , var3 ) then begin
PlotPaintBar( High , Low , Open , Close , "" , White ) ;
end

If Close < ParabolicSAR( .02 , .2 , var0 , var1 , var2 , var3 ) then begin
PlotPaintBar(High , Low , Open , Close "" , White ) ;
end

First of all, this will not compile. It says that it does not expect the second "if" statement. Therefore, my first question is what is wrong with this keeping it from accepting the second If statement.

The second issue is that, if I take out the second If statement, then it has no problems compiling - but, it colors every single bar as white. What have I done wrong so that every bar is white rather than only the bars that are above the PSAR.

If I take out the first If statement and only choose to color the bars that are below the PSAR then none of the bars will color.

If you need it, here is the ParabolicSAR function code:

inputs: AfStep( 0.02), AfLimit( 0.2 ) ;
variables: var0( 0 ), var1( 0 ), var2( 0 ), var3( 0 ), var4( "" ) ;

Value1 = ParabolicSAR( AfStep , AfLimit , var0 , var1 , var2 , var3 ) ;

Plot1( var0, "ParCl" ) ;


if var3 = 1 then
Alert( "Bullish reversal" )
else if var3 = -1 then
Alert( "Bearish reversal" ) ;


Thank you very much for your help.

There are a few items that I have that will come after this.


1. Put a semicolon after every "end" statement (

2. You have both conditions painting the bar as white. Also, make sure ParabolicSAR is giving you correct values.



You don't need a course to learn Easy Language. Try these 2 guides. They are old, but if you follow the exercises, you'll get up to speed quickly, and for free.

Attached Thumbnails
Programming Newbie-el_essentials.pdf   Programming Newbie-el_functionsandreservedwords_ref.pdf  
Follow me on Twitter Reply With Quote
 
(login for full post details)
  #4 (permalink)
Lübeck, Germany
 
Experience: Intermediate
Platform: NinjaTrader, MT4
Broker: FXCM, Interactive Brokers, Oanda
Trading: Forex
 
JGSmith's Avatar
 
Posts: 151 since Aug 2013
Thanks: 61 given, 55 received


kevinkdog View Post
1. Put a semicolon after every "end" statement (

2. You have both conditions painting the bar as white. Also, make sure ParabolicSAR is giving you correct values.



You don't need a course to learn Easy Language. Try these 2 guides. They are old, but if you follow the exercises, you'll get up to speed quickly, and for free.

haha, pretty dumb mistake about both conditions being white. LOL. Obviously I was working on that late last night.

Anyway, I will post the updated code. It has not changed anything so I think that it has to do with the PSAR giving the correct values. I will also post a pic of the chart. As far as I know, in the PSAR code, the only values that matter are the .02 & .2. Correct? From what I understand in the EasyLanguage dictionary that the other values are just for order entry/management.

Also, thanks a ton for the resources to learn EL. I will spend time on those.

Variables:
var0( 0 ) ,
var1( 0 ) ,
var2( 0 ) ,
var3( 0 ) ;



if Close > ParabolicSAR( .02 , .2 , var0 , var1 , var2 , var3 ) then begin
PlotPaintBar( High , Low , Open , Close , "" , White ) ;
end ;

If Close < ParabolicSAR( .02 , .2 , var0 , var1 , var2 , var3 ) then begin
PlotPaintBar(High , Low , Open , Close , "" , Magenta ) ;
end ;



Started this thread Reply With Quote
 
(login for full post details)
  #5 (permalink)
 
 
Posts: 2,979 since Jul 2012
Thanks: 1,576 given, 5,906 received

You are using the function incorrectly. Below is info from the Help file:

Returns (Integer)
The oParCl, OParOP, oPosition, oTransition output parameters return the parabolic stop values for the current day and the next bar, as well as the probable position of the market. The ParabolicSAR itself returns 1.

Parameters
Name
Type
Description

AfStep
Numeric
Sets the acceleration increment factor.

AfLimit
Numeric
Sets the acceleration limitation factor.

oParCl
Numeric
Outputs the parabolic stop value for the current bar.

oParOp
Numeric
Outputs the parabolic stop value for the next bar.

oPosition
Numeric
Outputs the potential market position. 1 for long, -1 for short.

oTransition
Numeric
Outputs if the current bar market position has changed. 1 or -1 for reversal days 0 for holding days.



Example
Vars: oParCl(0), oParOp(0), oPostion(0), oTransition(0);

Value1 = ParabolicSAR(0.02, 0.4, oParCl, oParOp, oPosition, oTransition);
Value2 = oParCl;
Value3 = oParOp;
Value4 = oPosition;
Value5 = oTransition;


Follow me on Twitter Reply With Quote
 
(login for full post details)
  #6 (permalink)
Lübeck, Germany
 
Experience: Intermediate
Platform: NinjaTrader, MT4
Broker: FXCM, Interactive Brokers, Oanda
Trading: Forex
 
JGSmith's Avatar
 
Posts: 151 since Aug 2013
Thanks: 61 given, 55 received


kevinkdog View Post
You are using the function incorrectly. Below is info from the Help file:

Okay thanks.

Obviously there is still plenty more for me to learn as this information doesn't help me much.

I am actively going through the PDFs that you posted and will see if that information helps me.

Started this thread Reply With Quote
 
(login for full post details)
  #7 (permalink)
Lübeck, Germany
 
Experience: Intermediate
Platform: NinjaTrader, MT4
Broker: FXCM, Interactive Brokers, Oanda
Trading: Forex
 
JGSmith's Avatar
 
Posts: 151 since Aug 2013
Thanks: 61 given, 55 received

Finally got that figured out. Now it works like a charm!

Here is my next question and I can not find the answer to this anywhere in any of the easy language docs.

This one also deals with PaintBars.

Now I would like to create a paint bar if the Aroon Up indicator = 100, Close > Open, and Close > keltner Channel. But, I only want it on the first candle that closes outside of the keltner channel. Basically it needs to close back inside of the keltner channel in order to "reset".

 
Code
if __AroonUp = 100 and
Close > KeltnerChannel and
Open > Close then
PlotPaintBar(Open,Low,High,Close,"",Magenta);
Clearly that part is quite straight forward.

But now I need to figure out how to just make the first occurrence of the close outside of the KeltnerChannel to the painted bar.

Any suggestions?

I really appreciate the help.

Started this thread Reply With Quote
 
(login for full post details)
  #8 (permalink)
 
 
Posts: 2,230 since Apr 2013
Thanks: 409 given, 1,471 received

JGSmith,

you can also google for EasyLanguage or PowerLanguage tutorials. There are some around that might help you, too.
Other than that you are already moving into the right direction. You best learn the language when you program it. Start simple and keep getting more complex. If you run into a problem there is always a helping hand here.

Regards,
ABCTG

Follow me on Twitter Reply With Quote
The following user says Thank You to ABCTG for this post:
 
(login for full post details)
  #9 (permalink)
 
 
Posts: 2,230 since Apr 2013
Thanks: 409 given, 1,471 received

JGSmith,

you will need a flag for that. This is a variable you use to prevent the paintbar from plotting more than once.
The variable could be a Boolean variable i.e. true/false.

Something like this should work:

 
Code
Variables: HavePaintBar(false);

//the reset part:
if Close < KeltnerChannel and HavePaintBar then
HavePaintBar = false;

if __AroonUp = 100 and
Close > KeltnerChannel and
Open > Close and HavePaintBar = false then
begin
HavePaintBar = true;
PlotPaintBar(Open,Low,High,Close,"",Magenta);
end;
Regards,
ABCTG


JGSmith View Post
Finally got that figured out. Now it works like a charm!

Here is my next question and I can not find the answer to this anywhere in any of the easy language docs.

This one also deals with PaintBars.

Now I would like to create a paint bar if the Aroon Up indicator = 100, Close > Open, and Close > keltner Channel. But, I only want it on the first candle that closes outside of the keltner channel. Basically it needs to close back inside of the keltner channel in order to "reset".

 
Code
if __AroonUp = 100 and
Close > KeltnerChannel and
Open > Close then
PlotPaintBar(Open,Low,High,Close,"",Magenta);
Clearly that part is quite straight forward.

But now I need to figure out how to just make the first occurrence of the close outside of the KeltnerChannel to the painted bar.

Any suggestions?

I really appreciate the help.


Follow me on Twitter Reply With Quote
The following user says Thank You to ABCTG for this post:
 
(login for full post details)
  #10 (permalink)
Lübeck, Germany
 
Experience: Intermediate
Platform: NinjaTrader, MT4
Broker: FXCM, Interactive Brokers, Oanda
Trading: Forex
 
JGSmith's Avatar
 
Posts: 151 since Aug 2013
Thanks: 61 given, 55 received



ABCTG View Post
JGSmith,

you can also google for EasyLanguage or PowerLanguage tutorials. There are some around that might help you, too.
Other than that you are already moving into the right direction. You best learn the language when you program it. Start simple and keep getting more complex. If you run into a problem there is always a helping hand here.

Regards,
ABCTG

Thanks a ton, ABCTG

Looks like we are practically neighbors. You are in Hamburg. I am often there as my wife's family is in Lübeck. Would be fun to meet up sometime.

Started this thread Reply With Quote
 
(login for full post details)
  #11 (permalink)
Lübeck, Germany
 
Experience: Intermediate
Platform: NinjaTrader, MT4
Broker: FXCM, Interactive Brokers, Oanda
Trading: Forex
 
JGSmith's Avatar
 
Posts: 151 since Aug 2013
Thanks: 61 given, 55 received


ABCTG View Post
JGSmith,

you will need a flag for that. This is a variable you use to prevent the paintbar from plotting more than once.
The variable could be a Boolean variable i.e. true/false.

Something like this should work:

 
Code
Variables: HavePaintBar(false);

//the reset part:
if Close < KeltnerChannel and HavePaintBar then
HavePaintBar = false;

if __AroonUp = 100 and
Close > KeltnerChannel and
Open > Close and HavePaintBar = false then
begin
HavePaintBar = true;
PlotPaintBar(Open,Low,High,Close,"",Magenta);
end;
Regards,
ABCTG

Unfortunately, this didn't work. I will post some more details tomorrow to see if we can get this figured out. It may be something that plenty of people will find beneficial.

Started this thread Reply With Quote
 
(login for full post details)
  #12 (permalink)
 
 
Posts: 2,230 since Apr 2013
Thanks: 409 given, 1,471 received

Okay. I just posted the idea from the top of my head and didn't test it first.
If you post the whole code, I can take a look at it tomorrow as well.

Regards and a good night,
ABCTG


JGSmith View Post
Unfortunately, this didn't work. I will post some more details tomorrow to see if we can get this figured out. It may be something that plenty of people will find beneficial.


Follow me on Twitter Reply With Quote
The following user says Thank You to ABCTG for this post:
 
(login for full post details)
  #13 (permalink)
Houston, TX
 
 
Posts: 294 since Aug 2013
Thanks: 1,420 given, 757 received

In EasyLanguage, first occurrences of a condition being true or false can be derived by comparing the value of a variable set when the current bar is evaluated vs the value of the same variable set when the previous bar was evaluated.

For instance, if you store your condition (true/false) result in a variable "HavePaintBar" in your code - something like this:
 
Code
if (myCondition) then
HavePaintBar = True
Else
HavePaintBar = False;

Then to check if the condition became true for the first time, you could write something like this:
 
Code
If (HavePaintBar = True And HavePaintBar[1] = False) then
PlotPaintBar()...

The value evaluated for a variable for each previous bar can be accessed by using the [1], [2]... etc suffix as if the values are being stored in an array and you can access the value using the array index.

Hope this helps.

Reply With Quote
 
(login for full post details)
  #14 (permalink)
Lübeck, Germany
 
Experience: Intermediate
Platform: NinjaTrader, MT4
Broker: FXCM, Interactive Brokers, Oanda
Trading: Forex
 
JGSmith's Avatar
 
Posts: 151 since Aug 2013
Thanks: 61 given, 55 received


ABCTG View Post
Okay. I just posted the idea from the top of my head and didn't test it first.
If you post the whole code, I can take a look at it tomorrow as well.

Regards and a good night,
ABCTG

Great, thanks so much. Your help has been invaluable toward my further understanding.


iNeo View Post
In EasyLanguage, first occurrences of a condition being true or false can be derived by comparing the value of a variable set when the current bar is evaluated vs the value of the same variable set when the previous bar was evaluated.

For instance, if you store your condition (true/false) result in a variable "HavePaintBar" in your code - something like this:

Thank you iNeo. This has helped to move things forward. From what I can see, it is better - but still not exact.

I am posting a pic and the code for what I have so far.

Important for anybody reading this and may say, "Wow, that code produced a really great buy signal!!" and then attempt to use it. There is still one very important parameter that is not entered into the code yet so it is not tradeable as it is. Secondly, I haven't seen this strategy work as well on Futures or Equities. It may work, but I have not been able to find other instruments besides certain FX pairs that it works on.

In the picture, you will see some Blue squares. These blue squares are the ones that are correct - according to the current parameters. Those with the Red arrow above them are incorrect.



 
Code
input:
	thold ( 20 ) ,
	length ( 14 ) ,
	CandleColorLong( white ) ,
	CandleColorShort( Magenta ), 
	AroonLength( 14 ),
	KCATR( 1.5 ) ,
	KCLength( 20 ),
	MALength( 20 ), 
	AFStep( 0.02 ),
	AfLimit( 0.2 );

variables:
	var0( 0 ) ,
	var1( 0 ) ,
	var2( 0 ) ,
	var3( 0 ) ,
	HavePaintBar( false ) ;
	
Value1 = ParabolicSAR( AfStep , AfLimit , var0 , var1 , var2 , var3 ) ;


	if __AroonUp( AroonLength ) = 100 and
		Close > Open and 
		Close > KeltnerChannel(close , KCLength , KCATR ) and
		Close > Average( Close , MALength ) and 
		var3 <= 1 and
		(__AroonUp[1]( AroonLength ) <> 100 or
		Close[1] < Open[1] or
		Close[1] < KeltnerChannel(close , KCLength , KCATR )[1] or
		Close[1] < Average( Close , MALength )[1] or
		var3 <= 1 ) 
	then
		HavePaintBar = True 
	else
		HavePaintBar = False;
		
	If HavePaintBar = True and 
		HavePaintBar[1] = False then 			
		PlotPaintBar(High , Low , Open , Close , "" , CandleColorLong ) ;
First, is there someway that I have misunderstood what has been said already and that is causing me to not get the result that I am looking for?
Secondly, if I have understood everything correctly thus far, can you see the adjustments that I need to make?

I genuinely want to thank people for their help. This has been invaluable to my learning up this point.

Started this thread Reply With Quote
 
(login for full post details)
  #15 (permalink)
 
 
Posts: 2,230 since Apr 2013
Thanks: 409 given, 1,471 received

You are welcome.

Please check this code, I am using the close below the Keltner to reset the ability to look for a new paintbar.
If this doesn't do what you want, maybe you can post a screenshot that displays the bars this study shouldn't mark (just like you did with your study).

Regards,
ABCTG

 
Code
input:
	thold ( 20 ) ,
	length ( 14 ) ,
	CandleColorLong( white ) ,
	CandleColorShort( Magenta ), 
	AroonLength( 14 ),
	KCATR( 1.5 ) ,
	KCLength( 20 ),
	MALength( 20 ), 
	AFStep( 0.02 ),
	AfLimit( 0.2 );

variables:
	var0( 0 ) ,
	var1( 0 ) ,
	var2( 0 ) ,
	var3( 0 ) ,
	KeltnerValue(0),
	HavePaintBar( false ) ;
		
Value1 = ParabolicSAR( AfStep , AfLimit , var0 , var1 , var2 , var3 ) ;

KeltnerValue = KeltnerChannel(close , KCLength , KCATR );

//the reset part:
if Close < KeltnerValue and HavePaintBar then
HavePaintBar = false;

if __AroonUp( AroonLength ) = 100 and
	Close > Open and 
	Close > KeltnerValue and
	Close > Average( Close , MALength ) and 
	var3 <= 1 and
	(__AroonUp( AroonLength ) <> 100 or
	Close[1] < Open[1] or
	Close[1] < KeltnerValue[1] or
	Close[1] < Average( Close , MALength )[1] or
	var3 <= 1 ) 
then
	HavePaintBar = True;
	
If HavePaintBar = True and 
	HavePaintBar[1] = False then 			
	PlotPaintBar(High , Low , Open , Close , "" , CandleColorLong ) ;

Follow me on Twitter Reply With Quote
 
(login for full post details)
  #16 (permalink)
Lübeck, Germany
 
Experience: Intermediate
Platform: NinjaTrader, MT4
Broker: FXCM, Interactive Brokers, Oanda
Trading: Forex
 
JGSmith's Avatar
 
Posts: 151 since Aug 2013
Thanks: 61 given, 55 received


ABCTG View Post
Please check this code, I am using the close below the Keltner to reset the ability to look for a new paintbar.
If this doesn't do what you want, maybe you can post a screenshot that displays the bars this study shouldn't mark (just like you did with your study).

That works like a charm!

So it looks like you added another variable: KeltnerValue.

So basically if I wanted to do this with another indicator then I would need to add a new variable and then assign that variable with a value then I do that fancy little if/then statement and it all works?

Started this thread Reply With Quote
 
(login for full post details)
  #17 (permalink)
 
 
Posts: 2,230 since Apr 2013
Thanks: 409 given, 1,471 received

Great. It didn't not work before, because in a previous post I just wrote "KeltnerChannel" without the inputs.
That's why it probably didn't compile on your end.

I just added the KeltnerValue variable so you don't have to call the same function three times in your code. Now it's only called one time and the value is assigned to the variable KeltnerValue.
You could do the same with the __AroonUp and the Average, as you call them twice, too.
With your study this isn't a problem, but every function call will add to the time the indicator takes for the calculations.
Your study will also become easier to maintain when all functions are called in one place and then stored within variables for further use (at least this is my experience).

Yes, it should work the same when you want to do it with another indicator.

Regards,
ABCTG


JGSmith View Post
That works like a charm!

So it looks like you added another variable: KeltnerValue.

So basically if I wanted to do this with another indicator then I would need to add a new variable and then assign that variable with a value then I do that fancy little if/then statement and it all works?


Follow me on Twitter Reply With Quote
The following user says Thank You to ABCTG for this post:
 
(login for full post details)
  #18 (permalink)
Lübeck, Germany
 
Experience: Intermediate
Platform: NinjaTrader, MT4
Broker: FXCM, Interactive Brokers, Oanda
Trading: Forex
 
JGSmith's Avatar
 
Posts: 151 since Aug 2013
Thanks: 61 given, 55 received

I just wanted to come on here and post a picture of the completed first phase of my very first indicator that I have written (with the exception of practice indicators while trying to learn)

This is the basis for a strategy that I trade very regularly and now I can just remove the indicators from my chart and have a nice clean and pretty screen.

After patting myself on the back for a little bit and reveling in this accomplishment - there will be plenty of more work to get the next phases completed.

Here is a picture of the work. (The arrows are not part of the indicator - they are just to make more obvious where the PaintBars are for the sake of this screenshot.)


Started this thread Reply With Quote
 
(login for full post details)
  #19 (permalink)
Houston, TX
 
 
Posts: 294 since Aug 2013
Thanks: 1,420 given, 757 received

Good job.

Reply With Quote
 
(login for full post details)
  #20 (permalink)
 
 
Posts: 2,230 since Apr 2013
Thanks: 409 given, 1,471 received

Looks good, congratulations. As you are using Multicharts you can in fact let the indicator draw the arrows on the chart, too.
Arw_New, Arw_New_s or Arw_New_DT are the three reserved words that can draw a new arrow. You can change size, color and style with keywords words, too.



Regards,
ABCTG


JGSmith View Post
I just wanted to come on here and post a picture of the completed first phase of my very first indicator that I have written (with the exception of practice indicators while trying to learn)

This is the basis for a strategy that I trade very regularly and now I can just remove the indicators from my chart and have a nice clean and pretty screen.

After patting myself on the back for a little bit and reveling in this accomplishment - there will be plenty of more work to get the next phases completed.

Here is a picture of the work. (The arrows are not part of the indicator - they are just to make more obvious where the PaintBars are for the sake of this screenshot.)



Follow me on Twitter Reply With Quote
The following user says Thank You to ABCTG for this post:


futures io Trading Community Platforms and Indicators EasyLanguage Programming > Programming Newbie


Last Updated on September 4, 2013


Upcoming Webinars and Events
 

NinjaTrader Indicator Challenge!

Ongoing
 

Battlestations! Show us your trading desk - $1,500 in prizes!

March
 

Importance of Finding Your Own Way w/Adam Grimes

Elite only
 

Journal Challenge w/Jigsaw

April
     



Copyright © 2021 by futures io, s.a., Av Ricardo J. Alfaro, Century Tower, Panama, +507 833-9432, info@futures.io
All information is for educational use only and is not investment advice.
There is a substantial risk of loss in trading commodity futures, stocks, options and foreign exchange products. Past performance is not indicative of future results.
no new posts